Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_1_19910112 - 6-sources/mailer.crf
There are no other files named mailer.crf in the archive.
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 1
MAILER	MAC	17-Jul-84 20:30	

BC					; UPD ID= 564, SNARK:<6.UTILITIES>MAILER.MAC.15,  17-Jul-84 23:30:44 by TGRADY
BC					;Edit 22 - Fix JERR macro to save ac's, and fix error return from SIN in
BC					;	ALLIN0: routine to test for IOX4 - end of file.
BC					; UPD ID= 561, SNARK:<6.UTILITIES>MAILER.MAC.14,  11-Jul-84 22:57:28 by TGRADY
BC					;Edit 21 - Fix problem in OKSIZ routine that collects JFN's
BC					;	Also, don't build TO:/CC: lists here, let MAIL/MS or whoever do so
BC					;	in the MAIL.CPY file (for consistency, as well as to permit network
BC					;	names
BC					; UPD ID= 560, SNARK:<6.UTILITIES>MAILER.MAC.13,   3-Jul-84 14:54:15 by TGRADY
BC					;Edit 20 - continuation of previous edit (Merge maintenance edit 16).
BC					; UPD ID= 559, SNARK:<6.UTILITIES>MAILER.MAC.12,   3-Jul-84 13:42:20 by TGRADY
BC					;Multiple updates:
BC					; - Merge MAILER and MAILEX to be one program (Minor differences)
BC					; - Merge maintenance edits from Autopatch MAILER (Edits 14 thru 17)
BC					; UPD ID= 539, SNARK:<6.UTILITIES>MAILER.MAC.11,  30-May-84 16:43:49 by TGRADY
BC					;TCO 6.2074 - Change ONQ, and QUEIT to not die when internal memory
BC					;allocation causes problems.
BC					; UPD ID= 517, SNARK:<6.UTILITIES>MAILER.MAC.10,  17-Apr-84 10:10:41 by LOMARTIRE
BC					;TCO 6.1994 - Add ERJMP after other TTMSG to prevent crashing MAILER
BC					; UPD ID= 466, SNARK:<6.UTILITIES>MAILER.MAC.9,   8-Feb-84 09:36:54 by EVANS
BC					;Add flag to edit number so I VER will display decimal number.
BC					; UPD ID= 368, SNARK:<6.UTILITIES>MAILER.MAC.8,  11-Nov-83 23:23:05 by TGRADY
BC					;TCO 6.1768 (again) Change all references to PS: to POBOX:
BC					; UPD ID= 343, SNARK:<6.UTILITIES>MAILER.MAC.7,   9-Aug-83 09:10:13 by LOMARTIRE
BC					;TCO 6.1694 - Add new error message for when assigning PID to channel fails
BC					;  Also, fix typeo from previous edit
BC					; UPD ID= 342, SNARK:<6.UTILITIES>MAILER.MAC.6,   9-Aug-83 08:55:06 by LOMARTIRE
BC					;TCO 6.1693 - Add ERJMP to prevent TTMSG from crashing MAILER
BC					; UPD ID= 338, SNARK:<6.UTILITIES>MAILER.MAC.5,   3-Aug-83 15:19:40 by MILLER
BC					;TCO 6.1758.  Look on POBOX: for MAIL.TXT
BC					; UPD ID= 200, SNARK:<6.UTILITIES>MAILER.MAC.4,  29-Jan-83 18:40:08 by PAETZOLD
BC					;Increment edit and version numbers
BC					; UPD ID= 199, SNARK:<6.UTILITIES>MAILER.MAC.3,  28-Jan-83 20:43:59 by PAETZOLD
BC					;More TCO 6.1482 - Fix a typeo
BC					; UPD ID= 198, SNARK:<6.UTILITIES>MAILER.MAC.2,  28-Jan-83 20:42:13 by PAETZOLD
BC					;TCO 6.1482 - Place some strategic UFPGS% before CLOSF%s to avoid corrupted
BC					; mail files.  Update Copyright.
BC					; UPD ID= 1469, SNARK:<5.UTILITIES>MAILER.MAC.3,  21-Jan-81 22:22:07 by ZIMA
BC					; TCO 5.1237 - fix 4.1.1081 to remove security bug.
BC					; UPD ID= 945, SNARK:<5.UTILITIES>MAILER.MAC.2,  21-Aug-80 00:30:31 by LCAMPBELL
BC					; UFPGS MAIL.TXT in case of system crash shortly after mail delivery
BC					; UPD ID= 930, SNARK:<4.1.UTILITIES>MAILER.MAC.4,  20-Aug-80 12:47:56 by MILLER
BC					;FIX TYPEO
BC					; UPD ID= 273, SNARK:<4.1.UTILITIES>MAILER.MAC.3,  19-Feb-80 10:26:06 by MILLER
BC					;MORE TCO 4.1.1081 FIXES
BC					; UPD ID= 264, SNARK:<4.1.UTILITIES>MAILER.MAC.2,  15-Feb-80 10:04:24 by MILLER
BC					; TCO 4.1.1081. DO CHKAC ON COPY FILE
BC					;<4.UTILITIES>MAILER.MAC.36, 20-Sep-79 13:20:35, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.35, 20-Sep-79 13:18:36, Edit by LCAMPBELL
BC					; Remove initial dashes from msgs (violates RFC733)
BC					;<4.UTILITIES>MAILER.MAC.34, 19-Sep-79 12:32:41, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.33, 19-Sep-79 12:28:10, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.32, 19-Sep-79 12:25:17, Edit by LCAMPBELL
BC					; If MAIL.TXT busy, wait for up to 20 seconds before giving up
BC					;<4.UTILITIES>MAILER.MAC.31, 16-Aug-79 14:35:13, Edit by LCAMPBELL
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 1-1
MAILER	MAC	17-Jul-84 20:30	

BC					;<4.UTILITIES>MAILER.MAC.30, 16-Aug-79 14:25:23, Edit by LCAMPBELL
BC					; Insure CRLF before =======
BC					;<4.UTILITIES>MAILER.MAC.29, 16-Aug-79 11:34:53, Edit by LCAMPBELL
BC					; Eliminate ALL nulls from mail
BC					;<4.UTILITIES>MAILER.MAC.28, 15-Aug-79 18:14:32, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.27, 15-Aug-79 18:07:42, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.26, 15-Aug-79 18:01:42, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.24, 15-Aug-79 17:28:17, Edit by LCAMPBELL
BC					;<4.UTILITIES>MAILER.MAC.23, 15-Aug-79 17:26:10, Edit by LCAMPBELL
BC					; TCO 4.2402 - Don't insert spurious nulls into MAIL.TXT
BC					;<4.UTILITIES>MAILER.MAC.22, 25-Jun-79 17:12:08, Edit by LCAMPBELL
BC					; Prettier date/time in headers
BC					;<4.UTILITIES>MAILER.MAC.21, 29-May-79 09:55:43, Edit by OSMAN
BC					;TCO 4.2260 - Don't check TT%DAM when outputting mail announcement
BC					;<4.UTILITIES>MAILER.MAC.20,  4-May-79 14:43:48, Edit by LCAMPBELL
BC					; Don't put unwanted dashes into header
BC					;<4.UTILITIES>MAILER.MAC.19,  1-May-79 13:26:27, EDIT BY OSMAN
BC					;tco 4.2242 - Don't go arggggggh when bogus user number received
BC					;<4.UTILITIES>MAILER.MAC.18,  4-Apr-79 13:28:26, Edit by LCAMPBELL
BC					; Upper/lowercase header fields
BC					;<4.UTILITIES>MAILER.MAC.17, 12-Mar-79 14:23:54, Edit by LCAMPBELL
BC					; At OVRQTA, save D before IDIVI, since remainder goes in D
BC					;<4.UTILITIES>MAILER.MAC.16, 10-Mar-79 14:06:09, EDIT BY KONEN
BC					;UPDATE COPYRIGHT FOR RELEASE 4
BC					;<4.UTILITIES>MAILER.MAC.15,  9-Mar-79 10:28:57, EDIT BY MILLER
BC					;ONE MORE CHANGE TO OVRQTA. DO PAGE COMPUTATIONS CORRECTLY
BC					;<4.UTILITIES>MAILER.MAC.14,  9-Mar-79 10:18:17, EDIT BY MILLER
BC					;MORE FIXED. GET PAGE NUMBER CORRECTLY AT OVRQTA
BC					;<4.UTILITIES>MAILER.MAC.13,  8-Feb-79 10:15:55, EDIT BY MILLER
BC					;FIX OVER QUOTA HANDLING (AGAIN). USE CHFDB TO SET EOF POINTER
BC					;<4.UTILITIES>MAILER.MAC.12, 23-Jan-79 16:09:18, Edit by KONEN
BC					;UPDATE VERSION NUMBER FOR RELEASE 4
BC					;<4.UTILITIES>MAILER.MAC.11, 23-Oct-78 19:52:38, Edit by HESS
BC					;TCO 4.2062 - ADD COMMA TO END OF TO: AND CC: LINES THAT ARE CONTINUED
BC					;<4.UTILITIES>MAILER.MAC.10, 20-Oct-78 10:52:58, Edit by HESS
BC					;TCO 4.2056 CHECK 'REFUSE SYSTEM-MESSAGES' AND SET LAST WRITER STRING
BC					;<4.UTILITIES>MAILER.MAC.9, 21-Sep-78 11:07:31, EDIT BY MILLER
BC					;TCO 1897 AGAIN. MAKE SURE JFN IS IN A AT OVRQT1
BC					;<4.UTILITIES>MAILER.MAC.8, 19-Jul-78 19:44:21, EDIT BY MILLER
BC					;TURN ON CAPS BEFORE DOING CHFDB
BC					;<4.UTILITIES>MAILER.MAC.7,  3-Apr-78 09:51:56, EDIT BY MILLER
BC					;TCO 1897. FIX QUOTA PROBLEM
BC					;<4.UTILITIES>MAILER.MAC.6,  3-Apr-78 09:48:00, EDIT BY MILLER
BC					;OPENF MAIL FILE FOR READ AND WRITE
BC					;<4.UTILITIES>MAILER.MAC.5,  3-Apr-78 09:42:46, EDIT BY MILLER
BC					;FIX TYPEO
BC					;<4.UTILITIES>MAILER.MAC.4,  3-Apr-78 09:42:12, EDIT BY MILLER
BC					;COMPUTE EOF OF MAIL FILE FROM FDB DATA
BC					;<4.UTILITIES>MAILER.MAC.3, 31-Mar-78 13:11:54, EDIT BY MILLER
BC					;<4.UTILITIES>MAILER.MAC.2, 31-Mar-78 13:07:05, EDIT BY MILLER
BC					;<4.UTILITIES>MAILER.MAC.1, 31-Mar-78 13:05:21, EDIT BY MILLER
BC
BC
BC
BC					;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 1-2
MAILER	MAC	17-Jul-84 20:30	

BC					;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
BC					;
BC					;COPYRIGHT (C) 1976,1977,1978,1979,1980,1981,1982,1983,
BC					;BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
BC
BTITLEC						TITLE MAILER
BSEARCHC						SEARCH MONSYM,MACSYM
BSALLC						SALL
B.REQUIC						.REQUIRE SYS:MACREL
BIFNDEF.PSECT.PSECTC						IFNDEF .PSECT,<
BC						.DIRECT .XTABM>
BC
BC					; VERSION NUMBER DEFINITIONS
BC
BVMAJORC			000006		VMAJOR==6		;MAJOR VERSION OF MAILER
BVMINORC			000000		VMINOR==0		;MINOR VERSION NUMBER
BVEDITC			000026		VEDIT==^D22		;EDIT NUMBER
BVWHOC			000000		VWHO==0			;GROUP WHO LAST EDITED PROGRAM (0=DEC DEVELOPMENT)
BC
BVI%DECVWHOVMAJORVMINORVEDITVMAILR%....UCU		000000000000#		VMAILR== VI%DEC!<VWHO>B2+<VMAJOR>B11+<VMINOR>B17+VEDIT
BC
BC					;DEFINE REGISTERS
BC
BAC			000001		A==1
BBC			000002		B==2
BCC			000003		C==3
BDC			000004		D==4
BWC			000005		W==5
BW1C			000006		W1==6
BW2C			000007		W2==7
BW3C			000010		W3==10
BW4C			000011		W4==11
BW5C			000012		W5==12
BW6C			000013		W6==13
BPC			000017		P==17
BNOACKC			000002		NOACK==2			;NO MESSAGES COULD BE SENT
BNOACK1C			000001		NOACK1==1			;ONE OR MORE IDS WERE BAD
BNOACKQC			000001		NOACKQ==1			;QUOTA EXCEEDED
BNOACKBC			000000		NOACKB==0			;STANDARD MEANINGLESS ERROR
B.IPCSNC			000067		.IPCSN==67			;INFO WEND NAME FUNCTION
BMAXTRYC			000005		MAXTRY==5
BSYSCODC		777777	777776		SYSCOD==-2			;SPECIAL CODE FOR SYSTEM MESSAGE
BC
BC
BMESSC			010000		MESS==10000			;MESSAGE BUFFER
BUSERSC			001000		USERS==^D512
BUSRBLKC			011000		USRBLK=11000
BUSRBLKUSERSFILBUFC			012000		FILBUF==USRBLK+USERS
BFILSIZC			000062		FILSIZ==^D50
BFILBUFFILSIZBIGBUFC			012062		BIGBUF==FILBUF+FILSIZ
BSIZEC			303240		SIZE==^D500000/5		;SIZE OF MESSAGE BUFFER
BBIGBUFSIZEAREAC			315322		AREA==BIGBUF+SIZE		;FREE SPACE AREA
BFRESIZC			005000		FRESIZ==5000			;LEAVE LOTS OF ROOM
BC
BC					;	Define a macro to handle generic JSYS error conditions
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 1-3
MAILER	MAC	17-Jul-84 20:30	

BC
BDEFINEJERRC					DEFINE JERR ($TXT),<
BC						ERJMP [	PUSH P,A	;; Save ac's
BC							PUSH P,B	;;
BC							PUSH P,C	;;
BC							CALL JSERR0	;;REPORT THE JSYS ERROR STRING FIRST
BC							TMSG <$TXT>	;;And tack on the local error string
BC							POP P,C		;; Restore ac's
BC							POP P,B
BC							POP P,A
BC							JRST .+1]	;;Rejoin mainline code
BC					>
BEOFPTRBLOCKC	000000'				EOFPTR:	BLOCK 1			;HOLD EOF VALUE
BGETSIZBLOCKC	000001'				GETSIZ:	BLOCK 2			;TO HOLD FDB DATA
BFREHDZAREAC	000003'	000 00 0 00 315322 	FREHD:	Z AREA
BC
BFLAGWDC	000004'	000000	000000		FLAGWD:	0			;FLAG WORD
BCONDIRBLOCKC	000005'				CONDIR:	BLOCK 1			;SAVE CONNECTED DIR HERE
BSYSDIRBLOCKC	000006'				SYSDIR:	BLOCK 1			;REMEMBER SYSTEM NUMBER HERE
BSYSDI1BLOCKC	000007'				SYSDI1:	BLOCK 1			;DIR OF SYSTEM
BSTACKBLOCKC	000010'				STACK:	BLOCK 20		;PDL FOR MAILER
BC
BDEFPKTC	000030'				DEFPKT:				;PACKET TO DEFINE MAILER
BC	000030'	000000	000004			4			;ASSIGN TO THIS JOB
BC	000031'	000000	000000			0
BASCIZC	000032'	133 123 131 123 124 		ASCIZ /[SYSTEM]MAILER/	;MY NAME
BC	000033'	105 115 135 115 101 
BC	000034'	111 114 105 122 000 
BENDPKTC	000035'				ENDPKT:				;END OF PACKET
BSAVPIDZC	000035'	000 00 0 00 000000 	SAVPID:	Z 0			;SAVE USSER'S PID
BJFNZC	000036'	000 00 0 00 000000 	JFN:	Z 0			;WHERE TO DAVE JFN
BSAVBLOCKC	000037'				SAV:	BLOCK 1			;SAVE SP
BGTINFBLOCK.JICPJ.JITNOC	000040'				GTINF:	BLOCK <.JICPJ-.JITNO+1>	 ;GETJI STORES DATA HERE
BUSRBUFASCIIC	000047'	120 117 102 117 130 	USRBUF:	ASCII /POBOX:</
BC	000050'	072 074 000 000 000 
BBLOCKC	000051'					BLOCK 11		;WHERE TO FORM USER NAME FOR RCDIR
BERRORSZC	000062'	000 00 0 00 000000 	ERRORS:	Z 0			;ERROR COUNT
BMYPIDZC	000063'	000 00 0 00 000000 	MYPID:	Z 0		;MY ID
BSENDQZC	000064'	000 00 0 00 000000 	SENDQ:	Z 0
BERRSTKBLOCKC	000065'				ERRSTK:	BLOCK ^D200
BLEVTABADD1ADD1C	000375'	000000	000401'		LEVTAB:	ADD1
BADD1ADD1C	000376'	000000	000401'			ADD1
BADD1ADD1C	000377'	000000	000401'			ADD1
BCHNTABGOTONEC	000400'	000001	001065'		CHNTAB:	1,,GOTONE
BADD1ZC	000401'	000 00 0 00 000000 	ADD1:	Z 0
BFRMNAMBLOCKC	000402'				FRMNAM:	BLOCK 1
BFRMMSGBLOCKC	000403'				FRMMSG:	BLOCK 30		;HOLD FROM MESSAGE HERE
BFRMSTRBLOCKC	000433'				FRMSTR:	BLOCK 5			;User name part of from message
BFRMCNTBLOCKC	000440'				FRMCNT:	BLOCK	1		;Number of bytes in FRMSTR
BCHKBLK.CKAWR.CKAWRC	000441'	000000	000001		CHKBLK:	.CKAWR			;NEED WRITE ACCESS
BBLOCK.CKAUDC	000442'					BLOCK .CKAUD		;REMAINDER OF BLOCK
BC
BOPDEFPOPJPRETC		263740	000000		OPDEF RET [POPJ P,]
BOPDEFPUSHJPCALLC		260740	000000		OPDEF CALL [PUSHJ P,]
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 2
MAILER	MAC	17-Jul-84 20:30	

BC
BRELOCC	000640'					RELOC 1000-140		;SSTART ON A CLEAN PAGE
BC					;CODE
BC
BC					;PROGRAM ENTRY VECTOR
BC
BENTVECJRSTMAILERC	000640'	254 00 0 00 000747'	ENTVEC:	JRST MAILER		;STARTING LOCATION
BJRSTMAILERC	000641'	254 00 0 00 000747'		JRST MAILER		;REENTER LOCATION
BVMAILRVMAILRC	000642'	000000000000#			VMAILR			;VERSION NUMBER
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 3
MAILER	MAC	17-Jul-84 20:30	

BC
BALLOCSETZBW4W5C	000643'	403 11 0 00 000012 	ALLOC:	SETZB W4,W5		;POINTER AND SIZE OF BLOCK
BMOVEIWFREHDC	000644'	201 05 0 00 000003'		MOVEI W,FREHD		;WHERE IT ALL STARTS
BLOOKHRRZW2WC	000645'	550 07 0 05 000000 	LOOK:	HRRZ W2,(W)		;WHERE NEXT BLOCK IS
BJUMPEW2FINALC	000646'	322 07 0 00 000663'		JUMPE W2,FINAL		;AT THE END. LOOK AT WHAT WE HAVD
BHLRZW1W2C	000647'	554 06 0 07 000000 		HLRZ W1,(W2)		;COUNT
BCAINW1AC	000650'	306 06 0 01 000000 		CAIN W1,(A)		;EXACT MATCH?
BJRSTUSEITC	000651'	254 00 0 00 000666'		JRST USEIT		;YES. DO IT
BCAIGW1AC	000652'	307 06 0 01 000000 		CAIG W1,(A)		;BIG ENOUGH?
BJRSTNOPEC	000653'	254 00 0 00 000661'		JRST NOPE		;NO. FOO
BC
BC					;FOUND A CANDIDATE. SEE IF HE'S BETTER THAN THE LAST
BC
BSKIPEW5C	000654'	332 00 0 00 000012 		SKIPE W5		;GOT ONE YET?
BCAIGEW1W5C	000655'	305 06 0 12 000000 		CAIGE W1,(W5)		;YES. THIS ONE BETTER?
BSKIPAW5W1C	000656'	334 12 0 00 000006 		SKIPA W5,W1		;YES. USE IT
BJRSTNOPEC	000657'	254 00 0 00 000661'		JRST NOPE		;NO
BMOVEW4WC	000660'	200 11 0 00 000005 		MOVE W4,W		;REMEMBER POINTER
BNOPEHRRZWWC	000661'	550 05 0 05 000000 	NOPE:	HRRZ W,(W)		;GET NEXT BLOCK
BJRSTLOOKC	000662'	254 00 0 00 000645'		JRST LOOK		;GO PROCESS IT
BFINALSKIPNW1W5C	000663'	336 06 0 00 000012 	FINAL:	SKIPN W1,W5		;FOUND A GOOD ONE?
BRETC	000664'	263 17 0 00 000000 		RET			;NO. BOMB TIME
BMOVEWW4C	000665'	200 05 0 00 000011 		MOVE W,W4		;POINTER
BUSEITHRRZW4WC	000666'	550 11 0 05 000000 	USEIT:	HRRZ W4,(W)		;AREA TO ALLOCATE
BMOVNIW1AC	000667'	211 06 0 01 000000 		MOVNI W1,(A)		;NUMBRE OF WORDS NEEDED
BHRLZSW1C	000670'	517 00 0 00 000006 		HRLZS W1		;NEGATIVE TO LEFT HALF
BADDW1W4C	000671'	270 06 0 11 000000 		ADD W1,(W4)		;DO IT
BADDIW4AC	000672'	271 11 0 01 000000 		ADDI W4,(A)		;WHERE NRW BLOCK IS
BTLNEW1C	000673'	603 06 0 00 777777 		TLNE W1,-1		;ANYTHING LEFT?
BMOVEMW1W4C	000674'	202 06 0 11 000000 		MOVEM W1,(W4)		;YES. MAKE IT A NEW BLOCK
BHRRZW5WC	000675'	550 12 0 05 000000 		HRRZ W5,(W)
BHRLZMAW5C	000676'	516 01 0 12 000000 		HRLZM A,(W5)		;ASSIGNED BLOCK
BHRRMW4WC	000677'	542 11 0 05 000000 		HRRM W4,(W)		;LINK IN NEW FREE BLOCK
BMOVEIAW5C	000700'	201 01 0 12 000000 		MOVEI A,(W5)		;WHAT WE ASSIGNED
BAOSPC	000701'	350 00 0 17 000000 		AOS (P)
BRETC	000702'	263 17 0 00 000000 		RET			;GOOD RETURN
BC
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 4
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;THIS IS THE DEALLOCATE CODE. INPUT IS A=POINTER TO BLOCK
BC
BDEALLMOVEIWFREHDC	000703'	201 05 0 00 000003'	DEALL:	MOVEI W,FREHD
BLOOK1HRRZW1WC	000704'	550 06 0 05 000000 	LOOK1:	HRRZ W1,(W)		;BLOCK HEAD
BJUMPEW1HEREC	000705'	322 06 0 00 000712'		JUMPE W1,HERE		;IF AT THE END IT GOES HERE
BCAILW1AC	000706'	301 06 0 01 000000 		CAIL W1,(A)		;PAST THIS BLOCK?
BJRSTHEREC	000707'	254 00 0 00 000712'		JRST HERE		;YES. PU IT IN HERE
BMOVEWW1C	000710'	200 05 0 00 000006 		MOVE W,W1		;NO. STEP
BJRSTLOOK1C	000711'	254 00 0 00 000704'		JRST LOOK1		;GO DO MORE
BHERECAINWFREHDC	000712'	306 05 0 00 000003'	HERE:	CAIN W,FREHD		;AT THE TOP?
BJRSTLNKDWNC	000713'	254 00 0 00 000726'		JRST LNKDWN		;YES. CANT MERGE UP
BHLRZW1WC	000714'	554 06 0 05 000000 		HLRZ W1,(W)		;GET SIZE OF PREVIOUS
BADDIW1WC	000715'	271 06 0 05 000000 		ADDI W1,(W)		;TO THE END
BCAIEW1AC	000716'	302 06 0 01 000000 		CAIE W1,(A)		;UP TO THE BLOCK RELEASING?
BJRSTLNKDWNC	000717'	254 00 0 00 000726'		JRST LNKDWN		;NO. LINK IT IN
BHLRZW2AC	000720'	554 07 0 01 000000 		HLRZ W2,(A)		;DO THE MERGE
BHLRZW1WC	000721'	554 06 0 05 000000 		HLRZ W1,(W)
BADDIW1W2C	000722'	271 06 0 07 000000 		ADDI W1,(W2)		;NEW TOTAL SIZE
BSETZMAC	000723'	402 00 0 01 000000 		SETZM (A)		;BLOT OUT THIS HEADER
BHRLMW1WC	000724'	506 06 0 05 000000 		HRLM W1,(W)		;NEW COUNT
BJRSTSEEDWNC	000725'	254 00 0 00 000732'		JRST SEEDWN		;TRY TO MERGE DOWN
BLNKDWNHRRZW2WC	000726'	550 07 0 05 000000 	LNKDWN:	HRRZ W2,(W)		;LINK TO NEXT
BHRRMAWC	000727'	542 01 0 05 000000 		HRRM A,(W)		;PUT THIS NEW BLOCK IN
BHRRMW2AC	000730'	542 07 0 01 000000 		HRRM W2,(A)		;AND PUT OLD LINK IN IT
BMOVEWAC	000731'	200 05 0 00 000001 		MOVE W,A		;NEW BASE BLOCK
BSEEDWNHLRZW1WC	000732'	554 06 0 05 000000 	SEEDWN:	HLRZ W1,(W)		;COUNRT
BADDIW1WC	000733'	271 06 0 05 000000 		ADDI W1,(W)		;END OF THIS BLOCK
BHRRZW2WC	000734'	550 07 0 05 000000 		HRRZ W2,(W)		;NEXT BLOCK
BCAIEW1W2C	000735'	302 06 0 07 000000 		CAIE W1,(W2)		;THIS IT?
BRETC	000736'	263 17 0 00 000000 		RET			;NO. DONE
BHLRZW3W2C	000737'	554 10 0 07 000000 		HLRZ W3,(W2)		;YES. MUST MERGE THEM
BHLRZW1WC	000740'	554 06 0 05 000000 		HLRZ W1,(W)		;COUNT OF PREVIOUS
BADDIW3W1C	000741'	271 10 0 06 000000 		ADDI W3,(W1)		;NEW COUNT OF MERGED BLOCKS
BHRLMW3WC	000742'	506 10 0 05 000000 		HRLM W3,(W)
BHRRZW3W2C	000743'	550 10 0 07 000000 		HRRZ W3,(W2)		;ITS LINK
BHRRMW3WC	000744'	542 10 0 05 000000 		HRRM W3,(W)		;NEW DOWN LINK FOR THIS GUY
BSETZMW2C	000745'	402 00 0 07 000000 		SETZM (W2)		;CLEAR IT
BRETC	000746'	263 17 0 00 000000 		RET			;ALL DONE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 5
MAILER	MAC	17-Jul-84 20:30	

BC
BREPEATC					Repeat 0,<
BC					
BC					DOUSR:	MOVEI W,0		;WORK
BC						MOVEI C,","		;FOR CONVENIENCE
BC					TOPOF:	SKIPN B,(D)		;WORK TO DO?
BC						POPJ P,			;NO. GO BACK
BC						SKIPE W			;NEED A COMMA?
BC						IDPB C,A		;YES. PUT IT IN
BC						CAMN B,[SYSCOD]		;IS THIS SYSTEM?
BC						JRST SPCUSR		;YES. GO DO IT
BC						MOVEM A,SAV		;SAVE BYTE POINTER IN CASE FAILING DIRST CLOBBERS IT
BC						DIRST			;CONVERT TO A STRING
BC						 JRST BAH		;WONT CONVERT
BC						CAMN B,SYSDIR		;IS THIS SYSTEM?
BC						JRST [	MOVE B,[SYSCOD]	;YES. GET INTERNAL VALUE
BC							MOVEM B,0(D)	;STORE IT
BC							JRST .+1]	;AND PROCEED
BC					TOPOF1:	AOS W
BC						ADDI D,1		;NEXT ONE
BC						CAIGE W,7		;MOR ON THIS LINE?
BC						JRST TOPOF		;YES
BC						HRROI B,[ASCIZ /,
BC					    /]
BC						SETZ C,			; STOP ON NULL
BC						SKIPE (D)		; only do this if usernames still left
BC						SOUT
BC						 JERR <MAILER SOUT% ERROR IN TOPOF1 ROUTINE>
BC						JRST DOUSR
BC					
BC					BAH:	AOS W1,ERRORS		;A BADDY
BC						SETOM (D)		;DONT TRY AGAIN
BC						AOS D			;DO NEXT ONE NEXT
BC						HRRZM A,ERRSTK-1(W1)	;PUT IN REASON
BC						AOS W1,ERRORS		;NEXT LOC
BC						MOVEM B,ERRSTK-1(W1)
BC						SKIPE W			;AT START OF LINE?
BC						BKJFN			;NO. ERASE THE COMMA
BC						 JERR <MAILER BKJFN% ERROR IN BAH ROUTINE>
BC						MOVE A,SAV		;GET BYTE POINTER THAT FAILING DIRST CLOBBERED
BC						JRST TOPOF
BC					
BC					;SPECIAL USER CODE FOUND
BC					
BC					SPCUSR:	HRROI B,[ASCIZ /SYSTEM/] ;YES. GET THE NAME
BC						SETZ C,
BC						SOUT			;PUT IT IN
BC						 JERR <MAILER SOUT% ERROR IN SPCUSR ROUTINE>
BC						MOVEI C,","		;PUT BACK THE PUNCTUATION
BC						JRST TOPOF1		;AND GO BACK IN
BC					>
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 6
MAILER	MAC	17-Jul-84 20:30	

BC
BMAILERRESETC	000747'	104 00 0 00 000147 	MAILER:	RESET
BHRROIAFRMMSGC	000750'	561 01 0 00 000403'		HRROI A,FRMMSG		;GET FROM MESSAGE BUFFER
BHRROIBASCIZC						HRROI B,[ASCIZ /
BC	000751'	561 02 0 00 002063'	[You have a message from /]
BSETZCC	000752'	400 03 0 00 000000 		SETZ C,
BSOUTC	000753'	104 00 0 00 000053 		SOUT			;MOVE MESSAGE TO THE BUFFER
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	000754'	320 16 0 00 002101'		 JERR <MAILER SOUT% ERROR IN MAIN LINE ROUTINE>
BMOVEMAFRMNAMC	000755'	202 01 0 00 000402'		MOVEM A,FRMNAM		;SAVE PLACE TO PUT NAME
BMOVEPIOWDSTACKC	000756'	200 17 0 00 002113'		MOVE P,[IOWD 20,STACK]
BMOVXRC%EMO..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIA..MX1C	000757'	205 01 0 00 000001 		MOVX A,RC%EMO		;EXACT MATCH PLEASE
BIFE..MX2IFE..MX2IFE..MX2HRROIBASCIZC	000760'	561 02 0 00 002114'		HRROI B,[ASCIZ /SYSTEM/] ;GET USER CODE FOR SYSTEM
BRCUSRC	000761'	104 00 0 00 000554 		RCUSR			;GET IT
BERJMPSETZCC						ERJMP [	SETZ C,		;NO SUCH DIR
BJRSTC	000762'	320 16 0 00 002116'			JRST .+1]	;AND MERGE IN
BTXNERC%NOMRC%AMB..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLNEA..TX1C	000763'	603 01 0 00 060000 		TXNE A,RC%NOM!RC%AMB	;FOUND IT?
BIFE..TX2IFE..TX2IFE..TX2SETZCC	000764'	400 03 0 00 000000 		SETZ C,			;NO
BMOVEMCSYSDIRC	000765'	202 03 0 00 000006'		MOVEM C,SYSDIR		;REMEMBER THE NUMBER
BMOVXRC%EMO..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIA..MX1C	000766'	205 01 0 00 000001 		MOVX A,RC%EMO		;EXACT MATCH AGAIN
BIFE..MX2IFE..MX2IFE..MX2HRROIBASCIZC	000767'	561 02 0 00 002120'		HRROI B,[ASCIZ /POBOX:<SYSTEM>/]
BRCDIRC	000770'	104 00 0 00 000553 		RCDIR			;NOW GET DIRECTORY DESCRIPTOR
BERJMPSETZCC						ERJMP [	SETZ C,
BJRSTC	000771'	320 16 0 00 002123'			JRST .+1]	;NO SUCH DIR
BTXNERC%NOMRC%AMB..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLNEA..TX1C	000772'	603 01 0 00 060000 		TXNE A,RC%NOM!RC%AMB	;DID IT MATCH
BIFE..TX2IFE..TX2IFE..TX2SETZCC	000773'	400 03 0 00 000000 		SETZ C,			;NO
BMOVEMCSYSDI1C	000774'	202 03 0 00 000007'		MOVEM C,SYSDI1		;SAVE DIRECTORY NUMBER
BMOVEIAC	000775'	201 01 0 00 400000 		MOVEI A,400000		;SELF
BMOVEBLEVTABLEVTABCHNTABC	000776'	200 02 0 00 002125'		MOVE B,[LEVTAB,,CHNTAB]	;INT LOCS
BSIRC	000777'	104 00 0 00 000125 		SIR
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001000'	320 16 0 00 002136'		 JERR <MAILER SIR% ERROR IN MAIN LINE ROUTINE>
BMOVSIBC	001001'	205 02 0 00 400000 		MOVSI B,(1B0)		;ENABLE 0 ONLY
BAICC	001002'	104 00 0 00 000131 		AIC
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001003'	320 16 0 00 002160'		 JERR <MAILER AIC% ERROR IN MAIN LINE ROUTINE>
BEIRC	001004'	104 00 0 00 000126 		EIR			;TRUN IT ALL ON
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001005'	320 16 0 00 002202'		 JERR <MAILER EIR% EROR IN MAIN LINE ROUTINE>
BMOVSIAFRESIZC	001006'	205 01 0 00 005000 		MOVSI A,FRESIZ		;SIZE OF FREE AREA
BMOVEMAAREAC	001007'	202 01 0 00 315322 		MOVEM A,AREA		;INITIALIZE FREE AREA
BMOVSIWC	001010'	205 05 0 00 010000 		MOVSI W,(1B5)		;GET ME A PID
BSETZBW1W2C	001011'	403 06 0 00 000007 		SETZB W1,W2		;ZERO FOR TWO PIDS
BMAIL1MOVEW3ENDPKTENDPKTDEFPKTDEFPKTC	001012'	200 10 0 00 002214'	MAIL1:	MOVE W3,[ENDPKT-DEFPKT,,DEFPKT]
BMOVEIAC	001013'	201 01 0 00 000004 		MOVEI A,4
BMOVEIBWC	001014'	201 02 0 00 000005 		MOVEI B,W		;THE PACKET
BMSENDC	001015'	104 00 0 00 000510 		MSEND			;DO IT
BJRSTMOVEIAC						 JRST [	MOVEI A,^D500	;SLEEP FOR AWHILE
BDISMSC							DISMS
BSKIPNW1C							SKIPN W1	;GOT A PID?
BJRSTMAILERC							JRST MAILER	;NO. START OVER
BSETZWC							SETZ W,		;YES. INIT HEADER
BJRSTMAIL1C	001016'	254 00 0 00 002215'			JRST MAIL1]	;AND SEND IT AGAIN
BMOVEMW1MYPIDC	001017'	202 06 0 00 000063'		MOVEM W1,MYPID		;SAVE ASSIGNED PID
BC
BC					;NOW GET SOME MESSAGES TO ACT UPON
BC
BMAINMOVEIAC	001020'	201 01 0 00 000007 	MAIN:	MOVEI A,7
BMOVEIBDC	001021'	201 02 0 00 000004 		MOVEI B,D
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 6-1
MAILER	MAC	17-Jul-84 20:30	

BMOVEWMYPIDC	001022'	200 05 0 00 000063'		MOVE W,MYPID		;RECEIVE ON MY ID
BMOVEID.MUQRYC	001023'	201 04 0 00 000020 		MOVEI D,.MUQRY		;DO A QUERY
BMUTILC	001024'	104 00 0 00 000512 		MUTIL			;DO IT
BJRSTNONEC	001025'	254 00 0 00 001053'		 JRST NONE		;NONE WAITING
BMOVEIAC	001026'	201 01 0 00 000007 		MOVEI A,7
BMOVEIBWC	001027'	201 02 0 00 000005 		MOVEI B,W		;FOR GETTING THE MESSAGE
BMOVEW3MESSC	001030'	200 10 0 00 002223'		MOVE W3,[1000,,MESS]	;FO THE MESSAGE
BMOVEW2MYPIDC	001031'	200 07 0 00 000063'		MOVE W2,MYPID		;RECEIVER'S PID
BSETZW6C	001032'	400 13 0 00 000000 		SETZ W6,		;MAKE SURE IPCF STORES HERE
BMRECVC	001033'	104 00 0 00 000511 		MRECV			;GET A MESSAGE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001034'	320 16 0 00 002235'		 JERR <MAILER MRECV% ERROR IN MAIN LINE ROUTINE>
BC
BC					;RECEIVED A MESSAGE. SEE WHAT IT IS
BC
BTRNNWC	001035'	606 05 0 00 000070 		TRNN W,7B32		;MAYBE FROM INFO?
BJRSTNOTINFC	001036'	254 00 0 00 001073'		JRST NOTINF		;NO  GO ON
BTRNNWC	001037'	606 05 0 00 007700 		TRNN W,77B29		;AN ERROR CONDITION?
BJRSTMAINC	001040'	254 00 0 00 001020'		JRST MAIN		;NO. DONT LOOK AT IT
BMOVEBWC	001041'	200 02 0 00 000005 		MOVE B,W
BANDIBC	001042'	405 02 0 00 000070 		ANDI B,7B32		;LOOK AT SENDER INFO
BCAIEBC	001043'	302 02 0 00 000020 		CAIE B,20		;FORM INFO?
BJRSTMAINC	001044'	254 00 0 00 001020'		JRST MAIN		;NO. MUST BE A LOST MESSAGE
BANDIWC	001045'	405 05 0 00 007700 		ANDI W,77B29		;LOOK AT ERROR
BCAIEW.IPCSNC	001046'	302 05 0 00 006700 		CAIE W,<.IPCSN>B29	;INFO RESSTART?
BJRSTHRROIAASCIZC						JRST [	HRROI A,[ASCIZ /
BC					?MAILER: UNKNOWN ERROR CONDITION FROM INFO
BC					/]
BPSOUTC							PSOUT
BHALTFC	001047'	254 00 0 00 002261'			HALTF]
BSETZBWW2C	001050'	403 05 0 00 000007 		SETZB W,W2		;YES. MUST START AGAIN
BMOVEW1MYPIDC	001051'	200 06 0 00 000063'		MOVE W1,MYPID
BJRSTMAIL1C	001052'	254 00 0 00 001012'		JRST MAIL1		;SEND OFF MY NAME THEN
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 7
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;NO MESSAGES WAITING
BC
BNONESKIPESENDQC	001053'	332 00 0 00 000064'	NONE:	SKIPE SENDQ		;REPLIES WATING?
BJRSTDOQ1C	001054'	254 00 0 00 001742'		JRST DOQ1		;YES. GO DO THEM
BMOVEIW.MUPICC	001055'	201 05 0 00 000022 		MOVEI W,.MUPIC		;ENABLE FOR INTS
BMOVEW1MYPIDC	001056'	200 06 0 00 000063'		MOVE W1,MYPID
BSETZW2C	001057'	400 07 0 00 000000 		SETZ W2,		;ON CHANNEL 0
BMOVEIAC	001060'	201 01 0 00 000003 		MOVEI A,3
BMOVEIBWC	001061'	201 02 0 00 000005 		MOVEI B,W		;WHERE THE PACKET ISS
BMUTILC	001062'	104 00 0 00 000512 		MUTIL			;DO IT
BJRSTHRROIAASCIZC						 JRST [	HRROI A,[ASCIZ /
BC					?MAILER: Unable to assign PID to channel
BC					/]				;POINT TO MESSAGE
BPSOUTC					 		PSOUT		;PRINT IT
BHALTFC	001063'	254 00 0 00 002275'			HALTF]		;DIE
BWAITC	001064'	104 00 0 00 000306 		WAIT			;WAIT HERE FOR INT
BGOTONESETOW2C	001065'	474 07 0 00 000000 	GOTONE:	SETO W2,		;RELEASE CHANNEL
BMUTILC	001066'	104 00 0 00 000512 		MUTIL
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001067'	320 16 0 00 002310'		 JERR <MAILER MUTIL% ERROR IN GOTONE ROUTINE>
BMOVEIAMAINC	001070'	201 01 0 00 001020'		MOVEI A,MAIN		;MAIN LOOP
BMOVEMAADD1C	001071'	202 01 0 00 000401'		MOVEM A,ADD1
BDEBRKC	001072'	104 00 0 00 000136 		DEBRK			;GO GET IT
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 8
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;MESSAGE NOT FROM INFO. MUST BE WORK TO DO
BC
BNOTINFMOVEMW1SAVPIDC	001073'	202 06 0 00 000035'	NOTINF:	MOVEM W1,SAVPID		;NO. SAVE IT FOR LATER
BSKIPNW6C	001074'	336 00 0 00 000013 		SKIPN W6		;GOT A CONNECTED DIR IN W6?
BJRSTHLRZW6W4C						JRST [	HLRZ W6,W4	;NO. ASSUME OLD STYLE IPCF THEN
BHRRZSW4C							HRRZS W4	;AND ISOLATE USER NUMBER
BJRSTC	001075'	254 00 0 00 002322'			JRST .+1]	;AND PROCEED
BMOVEMW6CONDIRC	001076'	202 13 0 00 000005'		MOVEM W6,CONDIR		;SAVE CONNECTED DIR HERE
BSETZMERRORSC	001077'	402 00 0 00 000062'		SETZM ERRORS		;NO ERRORS TO START
BMOVSIAC	001100'	205 01 0 00 100001 		MOVSI A,100001		;OLD FILE
BHRROIBMESSC	001101'	561 02 0 00 010000 		HRROI B,MESS		;WHERE THE FILE NAME IS
BSETZMJFNC	001102'	402 00 0 00 000036'		SETZM JFN		;NO JFN TO START
BGTJFNC	001103'	104 00 0 00 000020 		GTJFN			;GET THE FILE NAME
BJRSTNACKC	001104'	254 00 0 00 001704'		 JRST NACK		;CANT DO IT
BMOVEMAJFNC	001105'	202 01 0 00 000036'		MOVEM A,JFN		;STASH AWAY JFN
BMOVEBC	001106'	200 02 0 00 002325'		MOVE B,[440000,,200000]	;OPENF BITS
BOPENFC	001107'	104 00 0 00 000021 		OPENF			;GET FILE
BJRSTMOVEAJFNC						 JRST [	MOVE A,JFN
BRLJFNC							RLJFN
BJFCLC							 JFCL
BSETZMJFNC							SETZM JFN	;NO FILE OPENED
BJRSTNACKC	001110'	254 00 0 00 002326'			JRST NACK]	;CANT DO IT
BC						; ..
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 9
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;FILE IS OPENED. CHECK FOR WRITE ACCESS BEFORE PROCEEDING
BC						; ..
BC
BMOVEMACHKBLK.CKAUDC	001111'	202 01 0 00 000445'		MOVEM A,CHKBLK+.CKAUD	;JFN
BMOVXCK%JFN.CKAUD..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2MOVEA..MX1..MX1C	001112'	200 01 0 00 002333'		MOVX A,CK%JFN+.CKAUD+1	;FLAGS AND BLOCK LENGTH
BMOVEIBCHKBLKC	001113'	201 02 0 00 000441'		MOVEI B,CHKBLK		;ADDRESS OF ARGUMENT BLOCK
BMOVEMW4CHKBLK.CKALDC	001114'	202 11 0 00 000442'		MOVEM W4,CHKBLK+.CKALD	;STORE USER NUMBER
BMOVEMW6CHKBLK.CKACDC	001115'	202 13 0 00 000443'		MOVEM W6,CHKBLK+.CKACD	;STORE CONNECTED DIR
BMOVEMW5CHKBLK.CKAECC	001116'	202 12 0 00 000444'		MOVEM W5,CHKBLK+.CKAEC	;STORE ENABLED CAPS
BCHKACC	001117'	104 00 0 00 000521 		CHKAC			;CHECK ACCESS
BERJMPC						 ERJMP [		;FAILED
BCHKFAIMOVEAJFNC					CHKFAI:		MOVE A,JFN	;GET THE JFN
BCLOSFC							CLOSF		;CLOSE IT NOW
BNOPC							 NOP
BSETZMJFNC							SETZM JFN	;NO JFN
BJRSTNACKCHKFAIC	001120'	320 16 0 00 002334'			JRST NACK]	;AND GIVE UP
BJUMPEACHKFAIC	001121'	322 01 0 00 002334'		JUMPE A,CHKFAI		;FAIL IF CHKAC SAID NO ACCESS
BC						; ..
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 10
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;GOT FILE OPEN. NOW BUILD MESSAGE
BC						; ..
BSETZMERRORSC	001122'	402 00 0 00 000062'		SETZM ERRORS		;NO ERRORS
BREPEATC					REPEAT 0,<
BC						HRROI B,[ASCIZ /Date: /]
BC						HRROI A,BIGBUF
BC						SETZ C,
BC						SOUT			;PUT MESSAGE IN BUFFER
BC						 JERR <MAILER SOUT% ERROR IN NOTINF ROUTINE COPYING DATE: STRING>
BC						SETO B,
BC						MOVSI C,(OT%4YR!OT%SPA!OT%NCO!OT%NSC!OT%SCL!OT%TMZ)	;FORMAT BITS
BC						ODTIM			;PUT THE TIME IN THE FILE
BC						 JERR <MAILER ODTIM% ERROR IN NOTINF ROUTINE>
BC						HRROI B,[ASCIZ /
BC					From: /]
BC						SETZ C,
BC						SOUT			;PUT IN SENDER'S NAME
BC						 JERR <MAILER SOUT% ERROR IN NOTINF ROUTINE BUILDING FROM: STRING>
BC						MOVE B,W4		;LOGGED IN DIRECTORY
BC						MOVEM A,SAV		;MAYBE DIRST WILL FAIL, SO SAVE BYTE POINTER NOW
BC						DIRST			;PUT IT IN
BC						 CAIA			;FAILED, DON'T UPDATE BYTE POINTER WITH ERROR CODE!
BC						MOVEM A,SAV		;STASH AWAY SP
BC					>	;;END OF REPEAT 0
BMOVEAFRMNAMC	001123'	200 01 0 00 000402'		MOVE A,FRMNAM		;GET PLACE TO PUT NAME IN FROM MESSAGE
BMOVEBW4C	001124'	200 02 0 00 000011 		MOVE B,W4		;USER NUMBER
BDIRSTC	001125'	104 00 0 00 000041 		DIRST			;PUT IT IN
BMOVEAFRMNAMC	001126'	200 01 0 00 000402'		 MOVE A,FRMNAM		;FAILED, GET BYTE POINTER BACK (ERROR CODE CLOBBERED IT)
BPUSHPAC	001127'	261 17 0 00 000001 		PUSH P,A		;Save tye byte pointer
BHRROIAFRMSTRC	001130'	561 01 0 00 000433'		HRROI A,FRMSTR		;Set up pointer to FROM: Storage
BMOVEBW4C	001131'	200 02 0 00 000011 		MOVE B,W4		;Get user number
BDIRST%C	001132'	104 00 0 00 000041 		DIRST%			;Convert to user name
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001133'	320 16 0 00 002351'		 JERR <MAILER DIRST% ERROR IN NOTINF ROUTINE>
BMOVEAPOINTFRMSTRC	001134'	200 01 0 00 002363'		MOVE A,[POINT 7,FRMSTR]	;Now count the bytes in FRMSTR
BCALLCOUNTSC	001135'	260 17 0 00 002056'		CALL COUNTS		;
BMOVEMAFRMCNTC	001136'	202 01 0 00 000440'		MOVEM A,FRMCNT		;...
BPOPPAC	001137'	262 17 0 00 000001 		POP P,A			;
BHRROIBASCIZC						HRROI B,[ASCIZ /]
BC	001140'	561 02 0 00 002364'	/]
BSETZCC	001141'	400 03 0 00 000000 		SETZ C,
BSOUTC	001142'	104 00 0 00 000053 		SOUT			;TERMINATE THE MESSAGE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001143'	320 16 0 00 002377'		 JERR <MAILER SOUT% ERROR IN NOTINF ROUTINE COPYING ^G>
BIDPBCAC	001144'	136 03 0 00 000001 		IDPB C,A		;AND APPEND A NULL
BC
BC					;NOW GET LIST OF TO'S
BMOVEAJFNC	001145'	200 01 0 00 000036'		MOVE A,JFN		;THE FILE'S JFN
BBINC	001146'	104 00 0 00 000050 		BIN			;GET FLAG WORD FIRST
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001147'	320 16 0 00 002424'		 JERR <MAILER BIN% ERROR IN NOTINF ROUTINE READIN FLAG WORD>
BMOVEMBFLAGWDC	001150'	202 02 0 00 000004'		MOVEM B,FLAGWD		;SAVE IT FOR POSTERITY
BMOVEBPOINTUSRBLKC	001151'	200 02 0 00 002436'		MOVE B,[POINT ^D36,USRBLK] ;WHERE TO PUT THEM
BMOVEICUSERSC	001152'	201 03 0 00 000777 		MOVEI C,USERS-1		;MAX NUMBER
BSETZDC	001153'	400 04 0 00 000000 		SETZ D,
BSINC	001154'	104 00 0 00 000052 		SIN			;READ IN USER'S TO SEND TO
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001155'	320 16 0 00 002453'		 JERR <MAILER SIN% ERROR IN NOTINF ROUTINE READING USER NUMBERS>
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 10-1
MAILER	MAC	17-Jul-84 20:30	

BJUMPNCALLINC	001156'	326 03 0 00 001162'		JUMPN C,ALLIN		;IF ALL IN GO
BMOVEIBBC	001157'	201 02 0 02 000000 		MOVEI B,(B)		; SKIP OVER THE EXTRAS
BSINC	001160'	104 00 0 00 000052 		SIN			;SKIP OVER THE REST OF THEM
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001161'	320 16 0 00 002501'		 JERR <MAILER SIN% ERROR IN NOTINF ROUTINE SKIPPING USER NUMBERS>
BALLINHRLIBPOINTC	001162'	505 02 0 00 444400 	ALLIN:	HRLI B,(POINT ^D36)	; 
BSKIPNUSRBLKC	001163'	336 00 0 00 011000 		SKIPN USRBLK		; If null To list,
BMOVEBPOINTUSRBLKC	001164'	200 02 0 00 002436'		MOVE B,[POINT ^D36,USRBLK]	;Reuse zeroed first word
BMOVEICUSERSC	001165'	201 03 0 00 000777 		MOVEI C,USERS-1		;Now get CC list
BSETZDC	001166'	400 04 0 00 000000 		SETZ D,			;
BSIN%C	001167'	104 00 0 00 000052 		SIN%
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001170'	320 16 0 00 002522'		 JERR <MAILER SIN% ERROR IN ALLIN ROUTINE>
BJUMPNCALLIN0C	001171'	326 03 0 00 001175'		JUMPN C,ALLIN0		;None?
BMOVEIBBC	001172'	201 02 0 02 000000 		MOVEI B,(B)		;If too many
BSIN%C	001173'	104 00 0 00 000052 		SIN%			;
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001174'	320 16 0 00 002547'		 JERR <MAILER SIN% ERROR IN ALLIN ROUTINE READING CC LIST>
BALLIN0MOVEIDBC	001175'	201 04 0 02 000000 	ALLIN0:	MOVEI D,(B)		;SAVE END VALUE
BGTSTSC	001176'	104 00 0 00 000024 		GTSTS			;GET FILE STATUS
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001177'	320 16 0 00 002571'		 JERR <MAILER GTSTS% ERROR IN ALLIN ROUTINE>
BCAIEDUSRBLKC	001200'	302 04 0 00 011000 		CAIE D,USRBLK		;NO USER'S GIVEN?
BTLNEBC	001201'	603 02 0 00 001000 		TLNE B,1000		;EOF?
BJRSTNACKC	001202'	254 00 0 00 001704'		JRST NACK		;YES. BOMB
BREPEATC					Repeat 0,<
BC						MOVE A,SAV		;GET OLD POINTER
BC						HRROI B,[ASCIZ /
BC					To: /]
BC						PUSH P,C		;SAVE COUNT OF WORDS LEFT
BC						SETZ C,
BC						SOUT			;PREPARE FOR HEADER
BC						 JERR <MAILER SOUT% ERROR IN ALLIN ROUTINE COPYING TO: STRING>
BC						MOVEI D,USRBLK		;BEGINNING OF THEM
BC						PUSHJ P,DOUSR		;PROCESSS USER NAMES
BC						MOVEM A,SAV		;STASSH AWAY POINTER AGAIN
BC						POP P,C			;GET BACK THE COUNT
BC					ONEUSR:	PUSH P,D		;SAVE POINTER
BC						MOVE A,JFN
BC						MOVEI B,(D)
BC						HRLI B,444400		;REBUIL STRING POINTER
BC						SETZ D,
BC						MOVE W,C		;SAVE COUNT
BC						SKIPE C			;ROOM LEFT?
BC						SIN			;GET CC LIST
BC						 JERR <MAILER SIN% ERROR IN ONEUSR ROUTINE COPYING CC: USERS>
BC						SETZM 1(B)		;GUARANTEE A DOUBLE ZERO
BC						POP P,D			;GET USER LIST BACK
BC						JUMPN C,DOCC		;LESS THAN 100?
BC						MOVEI B,(B)		; NULL POINTER
BC						SIN			;READ IN THE REST
BC						 JERR <MAILER SIN% ERROR IN ONEUSR ROUTINE>
BC					DOCC:	GTSTS			;EOF?
BC						 JERR <MAILER GTSTS% ERROR IN DOCC ROUTINE>
BC						TLNE B,1000
BC						JRST NACK		;YES. BOMB IT
BC						MOVE A,SAV
BC						CAIN W,1(C)		;FOUND ANY CC'S?
BC						JRST ONMSG		;NO. GO AWAY
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 10-2
MAILER	MAC	17-Jul-84 20:30	

BC						HRROI B,[ASCIZ /
BC					cc: /]
BC						SETZ C,
BC						SOUT			;PUT IN HEADER
BC						 JERR <MAILER SOUT% ERROR IN DOCC ROUTINE>
BC						PUSHJ P,DOUSR		;DO CC LIST AS WELL
BC					ONMSG:	HRROI B,[ASCIZ /
BC					/]
BC						SETZ C,
BC						SOUT			;MESSAGE SEPARATOR
BC						 JERR <MAILER SOUT% ERROR IN ONMSG ROUTINE>
BC						PUSH P,A		; save current msg pointer
BC					>
BMOVEAJFNC	001203'	200 01 0 00 000036'		MOVE A,JFN		;FILE JFN
BMOVEIBC	001204'	201 02 0 00 000007 		MOVEI B,7		; set to 7-bit bytes
BSFBSZC	001205'	104 00 0 00 000046 		SFBSZ			; so ASCII SIN will work
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001206'	320 16 0 00 002613'		 JERR <MAILER SFBSZ% ERROR IN ONMSG ROUTINE>
BHRROIBBIGBUFC	001207'	561 02 0 00 012062 		HRROI B,BIGBUF		;Where to put message
BMOVECSIZESIZEC	001210'	200 03 0 00 002625'		MOVE C,[SIZE*5]		;MAXIMUM SIZE OF MESSAGE
BSETZMDC	001211'	402 00 0 00 000004 		SETZM D			;STOP ON A NULL
BSINC	001212'	104 00 0 00 000052 		SIN			;GET MESSAGE
BERCALCHKEOFC	001213'	320 17 0 00 001536'		 ERCAL CHKEOF		; Go check for EOF
BMOVNIWC	001214'	211 05 0 00 000001 		MOVNI W,1		; backup over null at end of msg text
BADJBPWBC	001215'	133 05 0 00 000002 		ADJBP W,B		;  ..
BMOVEBWC	001216'	200 02 0 00 000005 		MOVE B,W		;  ..
BLDBABC	001217'	135 01 0 00 000002 		LDB A,B			; get ending byte of mail
BCAIEAC	001220'	302 01 0 00 000012 		CAIE A,12		; line feed?
BJRSTMOVEIAC						JRST [	MOVEI A,15		; no, append CRLF to mail
BIDPBABC							IDPB A,B		;  ..
BMOVEIAC							MOVEI A,12		;  ..
BIDPBABC							IDPB A,B		;  ..
BJRSTC	001221'	254 00 0 00 002626'			JRST .+1]
BC						; ..
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 11
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;BIGBUF NOW CONTAINS THE ENTIRE MESSAGE. USRBLK CONTAINS THE
BC					;LIST OF USERS TO GET THIS MESSAGE. SEND IT TO EACH
BC
BOVERPUSHJPDELFILC	001222'	260 17 0 00 001646'	OVER:	PUSHJ P,DELFIL		;GET RID OF THE FILE
BMOVEAPOINTASCIZC						MOVE A,[POINT 7,[ASCIZ /   ========
BC	001223'	200 01 0 00 002636'	/]]
BSETZCC	001224'	400 03 0 00 000000 		SETZ C,
BSINC	001225'	104 00 0 00 000052 		SIN			;TIE OFF THE MESSAGE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001226'	320 16 0 00 002653'		 JERR <MAILER SIN% ERROR IN OVER ROUTINE TERMINATING MESSAGE TEXT>
BMOVEIWBC	001227'	201 05 0 02 000000 		MOVEI W,(B)		;GET FINAL WORD
BSUBIWBIGBUFC	001230'	275 05 0 00 012062 		SUBI W,BIGBUF		;CALCULATE NUMBER OF complete WORDS
BIMULIWC	001231'	221 05 0 00 000005 		IMULI W,5		;calculate number of bytes
BLDBBPOINTBC	001232'	135 02 0 00 002665'		LDB B,[POINT 6,B,5]	; get bits to the right of last byte
BIDIVIBC	001233'	231 02 0 00 000007 		IDIVI B,^D7		; compute no. of unused bytes in this word
BMOVEICC	001234'	201 03 0 00 000005 		MOVEI C,^D5		; bytes in a word
BSUBCBC	001235'	274 03 0 00 000002 		SUB C,B			; compute bytes used in this word
BADDWCC	001236'	270 05 0 00 000003 		ADD W,C			; adjust char count for partial word
BC
BC					;NOW W HAS COUNT OF CHARACTERS IN MSG
BC					;NOW SET TO SEND SOME MESSAGES
BC
BMOVEIDUSRBLKC	001237'	201 04 0 00 011000 		MOVEI D,USRBLK		;WHERE THE USER NAMES ARARE STORED
BSNDOFFSKIPNBDC	001240'	336 02 0 04 000000 	SNDOFF:	SKIPN B,(D)		;GET USER
BJRSTFINISC	001241'	254 00 0 00 001710'		JRST FINIS		;ALL DONE
BAOSDC	001242'	350 00 0 00 000004 		AOS D			;BUMP TO THE NEXT
BCAMNBC	001243'	316 02 0 00 002666'		CAMN B,[-1]		;BAD ENTRY?
BJRSTSNDOFFC	001244'	254 00 0 00 001240'		JRST SNDOFF		;YES
BCAMEBSYSCODSYSCODC	001245'	312 02 0 00 002667'		CAME B,[SYSCOD]		;IS IT SYSTEM?
BJRSTNOSYS3C	001246'	254 00 0 00 001257'		JRST NOSYS3		;NO. NO SPECIAL CHECKING THEN
BTRNEW5C	001247'	602 12 0 00 600000 		TRNE W5,600000		;YES. IS THIS FROM A PRIVILEGED GUY?
BJRSTNOSYS3C	001250'	254 00 0 00 001257'		JRST NOSYS3		;YES. ALLOW IT THEN
BMOVEW1CONDIRC	001251'	200 06 0 00 000005'		MOVE W1,CONDIR		;GET CONNECTED DIR
BCAMEW1SYSDI1C	001252'	312 06 0 00 000007'		CAME W1,SYSDI1		;IS IT SYSTEM?
BCAMNW4SYSDIRC	001253'	316 11 0 00 000006'		CAMN W4,SYSDIR		;LOGGED IN AS SYSTEM?
BJRSTNOSYS3C	001254'	254 00 0 00 001257'		JRST NOSYS3		;YES. ALLOW THIS SEND THEN
BMOVEIACAPX1C	001255'	201 01 0 00 600615 		MOVEI A,CAPX1		;NO. MUST BE PRIVILEGED
BJRSTOOPS2C	001256'	254 00 0 00 001635'		JRST OOPS2		;TELL USER OF THE PROBLEM
BNOSYS3CAMNBSYSCODSYSCODC	001257'	316 02 0 00 002667'	NOSYS3:	CAMN B,[SYSCOD]
BJRSTHRROIBASCIZC						JRST [	HRROI B,[ASCIZ /POBOX:<SYSTEM>MAIL.TXT/] ;YES
BMOVXGJ%DELGJ%SHT..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2MOVEA..MX1..MX1C							MOVX A,GJ%DEL!GJ%SHT+1 ;GET GTJFN BITS
BJRSTNOSYS2C	001260'	254 00 0 00 002676'			JRST NOSYS2]	;GO DO IT THEN
BPUSHPBC	001261'	261 17 0 00 000002 		PUSH P,B		;Save DIR number
BHRROIAFILBUFC	001262'	561 01 0 00 012000 		HRROI A,FILBUF		;Start of the buffer
BHRROIBASCIZC	001263'	561 02 0 00 002701'		HRROI B,[ASCIZ /POBOX:</]
BSETZCC	001264'	400 03 0 00 000000 		SETZ C,
BSOUTC	001265'	104 00 0 00 000053 		SOUT			;Copy the string
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001266'	320 16 0 00 002717'		 JERR <MAILER SOUT% ERROR IN NOSYS3 ROUTINE BUILDING POBOX: STRING>
BPOPPBC	001267'	262 17 0 00 000002 		POP P,B			;Restore DIR number
BMOVECAC	001270'	200 03 0 00 000001 		MOVE C,A		;SAVE BYTE POINTER IN CASE DIRST FAILS
BDIRSTC	001271'	104 00 0 00 000041 		DIRST			;PUT IN DIRECTORY NUMBER
BMOVEACC	001272'	200 01 0 00 000003 		 MOVE A,C		;DIRST SHOULDN'T FAIL, BUT IF IT DOES...
BMOVEICC	001273'	201 03 0 00 000076 		MOVEI C,">"
BIDPBCAC	001274'	136 03 0 00 000001 		IDPB C,A
BHRROIBASCIZC	001275'	561 02 0 00 002731'		HRROI B,[ASCIZ /MAIL.TXT/]
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 11-1
MAILER	MAC	17-Jul-84 20:30	

BSETZCC	001276'	400 03 0 00 000000 		SETZ C,
BSOUTC	001277'	104 00 0 00 000053 		SOUT			;BUIL FILL FILE SPEC
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001300'	320 16 0 00 002750'		 JERR <MAILER SOUT% ERROR IN NOSYS3 ROUTINE BUILDING MAIL.TXT STRING>
BHRROIBFILBUFC	001301'	561 02 0 00 012000 		HRROI B,FILBUF
BMOVXGJ%OLDGJ%DELGJ%SHT..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2IFE..MX1IFE..MX2MOVEA..MX1..MX1C	001302'	200 01 0 00 002762'		MOVX A,GJ%OLD!GJ%DEL!GJ%SHT+1 ;GTJFN BITS
BNOSYS2GTJFNC	001303'	104 00 0 00 000020 	NOSYS2:	GTJFN			;GET FILE HANDLE
BJRSTOOPS2C	001304'	254 00 0 00 001635'		 JRST OOPS2		;CAN'T DO IT
BMOVECAC	001305'	200 03 0 00 000001 		MOVE C,A
BMOVEIW1C	001306'	201 06 0 00 000050 		MOVEI W1,^D40		; Number of 1/2 sec waits if file busy
BNOSYS1MOVEBC	001307'	200 02 0 00 002763'	NOSYS1:	MOVE B,[070000,,300000]	;WRITE AND READ
BOPENFC	001310'	104 00 0 00 000021 		OPENF
BJRSTCAINAOPNX9C						 JRST [	CAIN A,OPNX9		; File busy error?
BSOJGEW1MOVEIAC							SOJGE W1,[MOVEI A,^D500		; Yes, wait 1/2 second
BDISMSC								DISMS			; Unless timed out (SOJG)
BMOVEACC								MOVE A,C		; Fetch JFN again
BJRSTNOSYS1C								JRST NOSYS1]		; Go try again
BEXCHACC							EXCH A,C
BRLJFNC							RLJFN		;ERROR
BJFCLC							 JFCL
BMOVEACC							MOVE A,C	;ERROR CODE AGAIN
BJRSTOOPS2C	001311'	254 00 0 00 002770'			JRST OOPS2]	;AND GO GIVE ERROR
BTXNNSC%WHLSC%OPR..TX1.IFN.IF..TX2IFE..TX1..TX2TRNNW5..TX1C	001312'	606 12 0 00 600000 		TXNN W5,SC%WHL!SC%OPR	;PRIVILEGED USER?
BIFE..TX2IFE..TX2IFE..TX2IFE..TX2CALLCAPOFFC	001313'	260 17 0 00 002026'		CALL CAPOFF		;NO. TURN OFF LOCAL CAPS THEN
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 12
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;HAVE FILE OPENED .NOW WRITE IT
BC
BMOVEACC	001314'	200 01 0 00 000003 		MOVE A,C		;THE JFN
BPUSHPCC	001315'	261 17 0 00 000003 		PUSH P,C		;SAVE IN CASE OF ERROR
BMOVEB.FBBYVC	001316'	200 02 0 00 002777'		MOVE B,[2,,.FBBYV]	;GET 2 WORDS
BMOVEICGETSIZC	001317'	201 03 0 00 000001'		MOVEI C,GETSIZ		;WHERE TO GET IT
BGTFDBC	001320'	104 00 0 00 000063 		GTFDB			;READ FILE DATA
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001321'	320 16 0 00 003010'		 JERR <MAILER GTFDB% ERROR IN NOSYS1 ROUTINE>
BLOADIFNDEFFB%BSZIFDEFFB%BSZIFNDEF%FB%BS..PSTIFEFB%BSZIFEFB%BSZIFEFB%BSZ..PST..CSN..CSCIRPIFE..CSN..CSC..CSC..CSCIFE..CSN..CSC..CSC..CSCIFE..CSN..CSC..CSC..CSCIFE..CSN..CSCSTOPILDBCPOINTFB%BSZFB%BSZGETSIZFB%BSZFB%BSZC	001322'	135 03 0 00 003022'		LOAD C,FB%BSZ,GETSIZ	;GET FILE BYTE SIZE
B..CSC..CSCIFDEF%FB%BSCAINCC	001323'	306 03 0 00 000007 		CAIN C,7		; already the right byte size?
BJRSTMOVEBGETSIZC						JRST [	MOVE B,GETSIZ+1		; yes, use exact byte count
BJRSTOKSIZC	001324'	254 00 0 00 003023'			JRST OKSIZ]
BMOVEIBC	001325'	201 02 0 00 000044 		MOVEI B,44		;BITS PER WORD
BIDIVIBCC	001326'	231 02 0 03 000000 		IDIVI B,0(C)		;COMPUTE TOTAL BYTES PER WORD
BEXCHBGETSIZC	001327'	250 02 0 00 000002'		EXCH B,GETSIZ+1		;GET BYTES IN B
BIDIVBGETSIZC	001330'	230 02 0 00 000002'		IDIV B,GETSIZ+1		;COMPUTE WORDS
BIMULIBC	001331'	221 02 0 00 000005 		IMULI B,5		;NOW COMPUTE # OF CHARACTERS
BOKSIZMOVEMBEOFPTRC	001332'	202 02 0 00 000000'	OKSIZ:	MOVEM B,EOFPTR		;SAVE IT
BSFPTRC	001333'	104 00 0 00 000027 		SFPTR			;SET TO EOF
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001334'	320 16 0 00 003035'		 JERR <MAILER SFPTR% ERROR IN OKSIZ ROUTINE>
BSETOMBC	001335'	476 00 0 00 000002 		SETOM B			;GET DATE AND TIME
BMOVSICOT%TMZC	001336'	205 03 0 00 000020 		MOVSI C,(OT%TMZ)	;IN THIS FORM
BODTIMC	001337'	104 00 0 00 000220 		ODTIM
BERJMPOVRQTAC	001340'	320 16 0 00 001554'		 ERJMP OVRQTA		;ERROR
BMOVEIBC	001341'	201 02 0 00 000054 		MOVEI B,","
BBOUTC	001342'	104 00 0 00 000051 		BOUT			;SEPARATE TIME FROM COUNT
BERJMPOVRQTAC	001343'	320 16 0 00 001554'		 ERJMP OVRQTA		;ERROR
BRFPTRC	001344'	104 00 0 00 000043 		RFPTR			;READ POSITION IN FILE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001345'	320 16 0 00 003057'		 JERR <MAILER RFPTR% ERROR IN OKSIZ ROUTINE>
BADDIBC	001346'	271 02 0 00 000006 		ADDI B,6		;AT LEAST 6 DIGITS FOR COUNT
BIDIVIBC	001347'	231 02 0 00 000005 		IDIVI B,5		;GET PART OF WORD IN C
BMOVNSCC	001350'	213 00 0 00 000003 		MOVNS C			;GET NEGITIVE OF REMAINDER
BADDICC	001351'	271 03 0 00 000013 		ADDI C,5+6		;GET WIDTH OF COUNT FIELD
BHRLCCC	001352'	504 03 0 00 000003 		HRL C,C			;GET IN RIGHT POSITION FOR NOUT
BTXONO%LFLNO%ZRO..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLOC..TX1C	001353'	661 03 0 00 140000 		TXO C,NO%LFL!NO%ZRO	;PUT IN LEADING ZEROS
BIFE..TX2IFE..TX2IFE..TX2MOVEBWC	001354'	200 02 0 00 000005 		MOVE B,W		;NUMBER OF CHARS
BADDBFRMCNTC	001355'	270 02 0 00 000440'		ADD B,FRMCNT		;Plus user name length
BADDIBC	001356'	271 02 0 00 000012 		ADDI B,^D10		;Plus "Sender: " and CRLF
BHRRICC	001357'	541 03 0 00 000012 		HRRI C,12		;IN DECIMAL
BNOUTC	001360'	104 00 0 00 000224 		NOUT
BERJMPOVRQTAC	001361'	320 16 0 00 001554'		 ERJMP OVRQTA		;ERROR
BPOPPAC	001362'	262 17 0 00 000001 		POP P,A			;RESTORE JFN
BHRROIBASCIZC						HRROI B,[ASCIZ /;000000000000
BC	001363'	561 02 0 00 003071'	Sender: /]
BMOVEICC	001364'	201 03 0 00 000000 		MOVEI C,0		;PUT ON THE FLAG FIELD
BSOUTC	001365'	104 00 0 00 000053 		SOUT
BERJMPOVRQT1C	001366'	320 16 0 00 001555'		 ERJMP OVRQT1		;ERROR
BHRROIBFRMSTRC	001367'	561 02 0 00 000433'		HRROI B,FRMSTR		;Real sender field
BSOUTC	001370'	104 00 0 00 000053 		SOUT
BERJMPOVRQT1C	001371'	320 16 0 00 001555'		 ERJMP OVRQT1		;Error, probably a quota problem
BHRROIBASCIZC						HRROI B,[ASCIZ/
BC	001372'	561 02 0 00 003076'	/]
BSOUTC	001373'	104 00 0 00 000053 		SOUT
BERJMPOVRQT1C	001374'	320 16 0 00 001555'		 ERJMP OVRQT1
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 12-1
MAILER	MAC	17-Jul-84 20:30	

BMOVEBPOINTBIGBUFC	001375'	200 02 0 00 003077'		MOVE B,[POINT 7,BIGBUF]
BMOVNCWC	001376'	210 03 0 00 000005 		MOVN C,W		;GET NEGATIVE WORD COUNT
BSOUTC	001377'	104 00 0 00 000053 		SOUT			;WRITE ALL WORDS
BERJMPOVRQT1C	001400'	320 16 0 00 001555'		 ERJMP OVRQT1		;ERROR
BCALLCAPONC	001401'	260 17 0 00 002042'		CALL CAPON		;ALL CAPS ON NOW
BPUSHPDC	001402'	261 17 0 00 000004 		PUSH P,D
BCALLUPDFILC	001403'	260 17 0 00 001503'		CALL UPDFIL		; Update file pages in case of crash
BPOPPDC	001404'	262 17 0 00 000004 		POP P,D
BHRLIA.FBCTLC	001405'	505 01 0 00 000001 		HRLI A,.FBCTL		;CHANGE STATUS BITS
BMOVXFB%DEL..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIB..MX1C	001406'	205 02 0 00 040000 		MOVX B,FB%DEL		;CHANGE DELETED BIT
BIFE..MX2IFE..MX2IFE..MX2SETZCC	001407'	400 03 0 00 000000 		SETZ C,			;MAKE IT A ZERO(UNDELETE)
BTXOCF%NUD..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLOA..TX1C	001410'	661 01 0 00 400000 		TXO A,CF%NUD		;DONT'T UPDATE DIR (SFUST/CLOSF WILL)
BIFE..TX2IFE..TX2IFE..TX2CHFDBC	001411'	104 00 0 00 000064 		CHFDB			;DO IT
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001412'	320 16 0 00 003114'		 JERR <MAILER CHFDB% ERROR IN OKSIZ ROUTINE UNDELETING MAIL.TXT>
BMOVXFB%PRM..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIB..MX1C	001413'	205 02 0 00 200000 		MOVX B,FB%PRM		;CHANGE PERMANENT BIT
BIFE..MX2IFE..MX2IFE..MX2MOVXFB%PRM..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIC..MX1C	001414'	205 03 0 00 200000 		MOVX C,FB%PRM		;TO BE SET
BIFE..MX2IFE..MX2IFE..MX2CHFDBC	001415'	104 00 0 00 000064 		CHFDB
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001416'	320 16 0 00 003143'		 JERR <MAILER CHFDB% ERROR IN OKSIZ ROUTINE SETTING MAIL.TXT PERMANENT>
BPUSHPAC	001417'	261 17 0 00 000001 		PUSH P,A		;SAVE JFN
BMOVEBW4C	001420'	200 02 0 00 000011 		MOVE B,W4		;USER NUMBER OF SENDER
BHRROIAFILBUFC	001421'	561 01 0 00 012000 		HRROI A,FILBUF		;PUT STRING HERE
BDIRSTC	001422'	104 00 0 00 000041 		DIRST
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001423'	320 16 0 00 003165'		 JERR <MAILER DIRST% ERROR IN OKSIZ ROUTINE>
BHRROIBFILBUFC	001424'	561 02 0 00 012000 		HRROI B,FILBUF		;POINT AT IT
BMOVEAPC	001425'	200 01 0 17 000000 		MOVE A,(P)		;RESTORE JFN
BHRLIA.SFLWRC	001426'	505 01 0 00 000001 		HRLI A,.SFLWR		;SET LAST WRITER
BSFUSTC	001427'	104 00 0 00 000551 		SFUST			; TO BE SENDER
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001430'	320 16 0 00 003207'		 JERR <MAILER SFUST% ERROR IN OKSIZ ROUTINE>
BHRLZAPC	001431'	514 01 0 17 000000 		HRLZ A,0(P)		;GET THE JFN
BMOVX..MX1.IFN.IF..MX2IFE..MX1..MX2MOVEIB..MX1C	001432'	201 02 0 00 001000 		MOVX B,^D512		;ALL SHORT FILE PAGES
BIFE..MX2IFE..MX2IFE..MX2IFE..MX2UFPGSC	001433'	104 00 0 00 000525 		UFPGS			;UPDATE FILE PAGES TO DISK
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001434'	320 16 0 00 003231'		 JERR <MAILER UFPGS% ERROR IN OKSIZ ROUTINE>
BPOPPAC	001435'	262 17 0 00 000001 		POP P,A			;GET THE JFN BACK
BHRRZSAC	001436'	553 00 0 00 000001 		HRRZS A			;Get JFN only.
BCLOSFC	001437'	104 00 0 00 000022 		CLOSF			;CLOSSE THE OUTPUT FILE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001440'	320 16 0 00 003253'		 JERR <MAILER CLOSF% ERROR IN OKSIZ ROUTINE>
BC						; ..
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 13
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;ROUTINE TO SEND MESSAGES TO ANY LOGGED IN USERS
BC
BMOVEADC	001441'	200 01 0 04 777777 		MOVE A,-1(D)		;GET USER
BCAMNASYSCODSYSCODC	001442'	316 01 0 00 002667'		CAMN A,[SYSCOD]
BIFNSK.IFB..SVDFSYNELSE...0001SYNENDIF...0002SYN..TAGF..0003SYN..TAGE..0004.PSHX.PSHX1.PSHX2DEFINE.PSHX1..INDFDEFINEELSE.DEFINEENDIF.TRNAC	001443'	604 00 0 00 000000 		IFNSK.
BJRST..0005C	001444'	254 00 0 00 001452'
BDEFINE..TAGFDEFINE..TAGEIFNBSETOAC	001445'	474 01 0 00 000000 		  SETO A,		;IS SYSTEM
BHRROIBASCIZC						  HRROI B,[ASCIZ /
BC					[New Message-of-the-Day available]
BC	001446'	561 02 0 00 003265'	/]
BTTMSGC	001447'	104 00 0 00 000775 		  TTMSG			;DO IT
BERJMPC	001450'	320 16 0 00 001451'		   ERJMP .+1		;IGNORE ERROR
BJRSTSNDOFFC	001451'	254 00 0 00 001240'		  JRST SNDOFF		;AND DONE
BENDIF...TAGF..0005..RSDF.POPX.PSHX1.POPX2.POPX4.POPX3SYN..0001ELSE.SYN..0002ENDIF.SYN..0003..TAGFSYN..0004..TAGEDEFINE.PSHX1C	001452'					ENDIF.
BSETZW6C	001452'	400 13 0 00 000000 		SETZ W6,		;INIT JOB NUMBER FOR SCAN
BTOPDIRMOVEIAW6C	001453'	201 01 0 13 000000 	TOPDIR:	MOVEI A,0(W6)		;JOB NUMBER
BMOVEB.JICPJ.JITNOGTINFC	001454'	200 02 0 00 003275'		MOVE B,[-<.JICPJ-.JITNO+1>,,GTINF] ;GET VALUES FROM MONITOR
BMOVEIC.JITNOC	001455'	201 03 0 00 000001 		MOVEI C,.JITNO		;GET TERM # AND LOGGED IN DIR
BGETJIC	001456'	104 00 0 00 000507 		GETJI			;GET THEM
BERJMPCAINAGTJIX3C						ERJMP [	CAIN A,GTJIX3	;OUT OF RANGE?
BJRSTSNDOFFC							JRST SNDOFF	;YES. ALL DONE
BAOJAW6TOPDIRC	001457'	320 16 0 00 003276'			AOJA W6,TOPDIR]	;NO. DO NEXT ONE THEN
BSKIPLGTINF.JICPJ.JITNOC	001460'	331 00 0 00 000046'		SKIPL GTINF+<.JICPJ-.JITNO> ;IS THIS A PTY?
BAOJAW6TOPDIRC	001461'	344 13 0 00 001453'		AOJA W6,TOPDIR		;YES. SKIP IT THEN
BDMOVEAGTINFC	001462'	120 01 0 00 000040'		DMOVE A,GTINF		;GET GETJI DATA IN REGS
BJUMPLAAOJAW6TOPDIRC	001463'	321 01 0 00 003300'		JUMPL A,[AOJA W6,TOPDIR] ;IF DETACHED, GO ON.
BCAMEBDC	001464'	312 02 0 04 777777 		CAME B,-1(D)		;IS THIS LOGGED INTO THE SAME DIR?
BAOJAW6TOPDIRC	001465'	344 13 0 00 001453'		AOJA W6,TOPDIR		;NO. SKIP IT THEN
BTROAC	001466'	660 01 0 00 400000 		TRO A,(1B0)		; MAKE IT A DEVICE DESIGNATOR
BRFMODC	001467'	104 00 0 00 000107 		RFMOD			; GET MODE BITS
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001470'	320 16 0 00 003311'		 JERR <MAILER RFMOD% ERROR IN TOPDIR ROUTINE>
BTXNNTT%ALK..TX1.IFN.IF..TX2IFE..TX1..TX2TRNNB..TX1C	001471'	606 02 0 00 001000 		TXNN B,TT%ALK		; IS HE ACCEPTING?
BIFE..TX2IFE..TX2IFE..TX2IFE..TX2AOJAW6TOPDIRC	001472'	344 13 0 00 001453'		AOJA W6,TOPDIR		;NO. DON'T TELL HIM THEN
BMOVEIB.MORNTC	001473'	201 02 0 00 000035 		MOVEI B,.MORNT		;SEE IF HE WANTS MESSAGES
BMTOPRC	001474'	104 00 0 00 000077 		MTOPR
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001475'	320 16 0 00 003333'		 JERR <MAILER MTOPR% ERROR IN TOPDIR ROUTINE>
BJUMPNCINCDIRC	001476'	326 03 0 00 001502'		JUMPN C,INCDIR		;JUMP IF NO MESSAGE
BHRROIBFRMMSGC	001477'	561 02 0 00 000403'		HRROI B,FRMMSG		;GET MESSAGE BLOCK
BTTMSGC	001500'	104 00 0 00 000775 		TTMSG			;SEND TO THIS USER
BERJMPC	001501'	320 16 0 00 001502'		 ERJMP .+1		;IGNORE ERROR
BINCDIRAOJAW6TOPDIRC	001502'	344 13 0 00 001453'	INCDIR:	AOJA W6,TOPDIR		;DO ALL JOBS
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 14
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;Routine to force write of pages just written in case of crash
BC					;Call:	A/ JFN
BC					;Return +1: always, A preserved
BC
BUPDFILSTKVAR..STKRRADIX..STKNIRPIFB..STKN..STKNIFNB..STKN..STKQ..STKQIFDEFTEMP2.IFDEFINETEMP2ZTEMP2P$TEMP2JSP.A16.STKSTC	001503'	265 16 0 00 000000*	UPDFIL:	STKVAR <TEMP2>
B..STKN..STKN..STKNC	001504'	000001	000001
BRADIX..STKRDEFINEENDSV.RFBSZC	001505'	104 00 0 00 000045 		RFBSZ			; Get byte size
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001506'	320 16 0 00 003355'		 JERR <MAILER RFBSZ% ERROR IN UPDFIL ROUTINE>
BMOVEICC	001507'	201 03 0 00 000044 		MOVEI C,^D36		; Bits in a word
BIDIVICBC	001510'	231 03 0 02 000000 		IDIVI C,(B)		; Compute bytes in a word
BMOVEMCTEMP2PC	001511'	202 03 0 17 777776 		MOVEM C,TEMP2		; Save for later
BRFPTRC	001512'	104 00 0 00 000043 		RFPTR			; Get EOF pointer
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001513'	320 16 0 00 003377'		 JERR <MAILER RFPTR% ERROR IN UPDFIL ROUTINE>
BIDIVBCC	001514'	230 02 0 00 000003 		IDIV B,C		; Compute words in file
BSKIPNCC	001515'	336 00 0 00 000003 		SKIPN C			; Even number of words?
BSUBIBC	001516'	275 02 0 00 000001 		SUBI B,1		; Yes, don't cross over to nonex. page
BMOVECEOFPTRC	001517'	200 03 0 00 000000'		MOVE C,EOFPTR		; Get original EOF pointer
BIDIVCTEMP2PC	001520'	230 03 0 17 777776 		IDIV C,TEMP2		; Compute original word count
BLSHBC	001521'	242 02 0 00 777767 		LSH B,-^D9		; Compute page number just written
BLSHCC	001522'	242 03 0 00 777767 		LSH C,-^D9		; Compute original last page number
BMOVEDBC	001523'	200 04 0 00 000002 		MOVE D,B		; Copy page no. just written
BSUBIDCC	001524'	275 04 0 03 000000 		SUBI D,(C)		; Pages written
BADDIDC	001525'	271 04 0 00 000001 		ADDI D,1		; Plus one for partial page
BHRLZSAC	001526'	517 00 0 00 000001 		HRLZS A			; JFN in LH for UFPGS
BHRRIACC	001527'	541 01 0 03 000000 		HRRI A,(C)		; First page to update
BMOVEIBDC	001530'	201 02 0 04 000000 		MOVEI B,(D)		; Page count
BTXOUF%NOW..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLOB..TX1C	001531'	661 02 0 00 400000 		TXO B,UF%NOW		; Don't block
BIFE..TX2IFE..TX2IFE..TX2UFPGSC	001532'	104 00 0 00 000525 		UFPGS			; Write these pages to disk
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001533'	320 16 0 00 003421'		 JERR <MAILER UFPGS% ERROR IN UPDFIL ROUTINE>
BHLRZSAC	001534'	557 00 0 00 000001 		HLRZS A			; Restore A to good state
BRETC	001535'	263 17 0 00 000000 		RET			;  and return
BC
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 15
MAILER	MAC	17-Jul-84 20:30	

BC
BC					; Here to check for EOF reading message text
BC
BCHKEOFSAVEAC.NACIRPPUSHPAC	001536'	261 17 0 00 000001 	CHKEOF:	SAVEAC <A,B,C>	; Save these
B.NAC.NACPUSHPBC	001537'	261 17 0 00 000002 
B.NAC.NACPUSHPCC	001540'	261 17 0 00 000003 
B.NAC.NAC.NAC.N1SETMI.A16CAIAAOS.N1PIRP.N1.N1MOVEA.N1P.N1.N1MOVEB.N1P.N1.N1MOVEC.N1PSUBP.NAC.NAC.NACPOPJPC	001541'	415 16 0 00 003434'
BPUSHP.A16C	001542'	261 17 0 00 000016 
BMOVX.FHSLF..MX1.IFN.IF..MX2IFE..MX1..MX2MOVEIA..MX1C	001543'	201 01 0 00 400000 		MOVX A,.FHSLF		; Our own fork
BIFE..MX2IFE..MX2IFE..MX2IFE..MX2GETER%C	001544'	104 00 0 00 000012 		GETER%			; Get our last error
BHRRZSBC	001545'	553 00 0 00 000002 		HRRZS B			; Isolate the error code
BCAINBIOX4C	001546'	306 02 0 00 600220 		CAIN B,IOX4		; Was it Eof?
BIFSKP.IFB..SVDFSYNELSE...0007SYNENDIF...0010SYN..TAGF..0011SYN..TAGE..0012.PSHX.PSHX1.PSHX2DEFINE.PSHX1..INDFDEFINEELSE.DEFINEENDIF.JRST..0013C	001547'	254 00 0 00 001553'		IFSKP.			; Skip means no
BDEFINE..TAGFDEFINE..TAGEIFNBCALLJSERR0C	001550'	260 17 0 00 000000*		 CALL JSERR0		; Print the error string
BTMSGHRROI.AC1ASCIZC	001551'	561 01 0 00 003443'		 TMSG <MAILER SIN% ERROR IN ALLIN0 ROUTINE>
BPSOUTC	001552'	104 00 0 00 000076 
BENDIF...TAGF..0013..RSDF.POPX.PSHX1.POPX2.POPX4.POPX3SYN..0007ELSE.SYN..0010ENDIF.SYN..0011..TAGFSYN..0012..TAGEDEFINE.PSHX1C	001553'					ENDIF.			; Otherwise
BRETC	001553'	263 17 0 00 000000 		RET
BC
BC					;HERE ON QUOTA ERROR
BC
BC					;	A/ JFN
BC
BOVRQTAPOPPAC	001554'	262 17 0 00 000001 	OVRQTA:	POP P,A			;GET THE JFN
BOVRQT1CALLCAPONC	001555'	260 17 0 00 002042'	OVRQT1:	CALL CAPON		;MAKE SURE ALL CAPS ARE ENABLED
BRFBSZC	001556'	104 00 0 00 000045 		RFBSZ			;GET CURRENT BYTE SIZE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001557'	320 16 0 00 003463'		 JERR <MAILER RFBSZ% ERROR IN OVRQTA ROUTINE>
BMOVEICC	001560'	201 03 0 00 000044 		MOVEI C,^D36
BPUSHPDC	001561'	261 17 0 00 000004 		PUSH P,D		;SAVE THIS REG
BIDIVICBC	001562'	231 03 0 02 000000 		IDIVI C,0(B)		;COMPUTE BYTES PER WORD
BPUSHPCC	001563'	261 17 0 00 000003 		PUSH P,C		;SAVE THIS FOR LATER
BRFPTRC	001564'	104 00 0 00 000043 		RFPTR			;GET CURRENT EOF POINTER
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001565'	320 16 0 00 003505'		 JERR <MAILER RFPTR% ERROR IN OVRQTA ROUTINE>
BIDIVBPC	001566'	230 02 0 17 000000 		IDIV B,0(P)		;COMPUTE WORDS
BLSHBC	001567'	242 02 0 00 777767 		LSH B,-11		;MAKE IT A PAGE NUMBER
BMOVECEOFPTRC	001570'	200 03 0 00 000000'		MOVE C,EOFPTR		;GET ORIGINAL EOF POINTER
BIDIVCPC	001571'	230 03 0 17 000000 		IDIV C,0(P)		;COMPUTE WORD #
BADJSPPC	001572'	105 17 0 00 777777 		ADJSP P,-1		;CLEAN UP STACK
BPOPPDC	001573'	262 17 0 00 000004 		POP P,D			;RESTORE REG
BLSHCC	001574'	242 03 0 00 777767 		LSH C,-11		;GET PAGE NUMBER
BSUBBCC	001575'	274 02 0 00 000003 		SUB B,C			;COMPUTE # OF PAGES ADDED
BJUMPEBOVRQT2C	001576'	322 02 0 00 001607'		JUMPE B,OVRQT2		;IF NONE, ALL SET
BEXCHBCC	001577'	250 02 0 00 000003 		EXCH B,C		;GET ARGS IN PROPER REGS
BTXO..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLOC..TX1C	001600'	661 03 0 00 400000 		TXO C,1B0		;REPEAT COUNT FOR PMAP
BIFE..TX2IFE..TX2IFE..TX2HRLBAC	001601'	504 02 0 00 000001 		HRL B,A
BADDIBC	001602'	271 02 0 00 000001 		ADDI B,1		;STARTING PAGE
BSETOMAC	001603'	476 00 0 00 000001 		SETOM A
BPMAPC	001604'	104 00 0 00 000056 		PMAP			;ZAP THE FILE PAGES
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001605'	320 16 0 00 003527'		 JERR <MAILER PMAP% ERROR IN OVRQTA ROUTINE>
BHLRZABC	001606'	554 01 0 00 000002 		HLRZ A,B		;JFN AGAIN
BC
BC					;EXTRA PAGES NOW DELETED. CHANGE FDB
BC
BOVRQT2HRLIA.FBBYVC	001607'	505 01 0 00 000011 	OVRQT2:	HRLI A,.FBBYV		;MAKE SURE BYTE SIZE IS CORRECT
BMOVXFB%BSZ..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIB..MX1C	001610'	205 02 0 00 007700 		MOVX B,FB%BSZ		;SET BYTE SIZE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 15-1
MAILER	MAC	17-Jul-84 20:30	

BIFE..MX2IFE..MX2IFE..MX2MOVXFLDFB%BSZFB%BSZFB%BSZ..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIC..MX1C	001611'	205 03 0 00 000700 		MOVX C,FLD(7,FB%BSZ)	;SET IT TO 7-BIT BYTES
BIFE..MX2IFE..MX2IFE..MX2CHFDBC	001612'	104 00 0 00 000064 		CHFDB			;DO IT
BERJMPOVRQT0C	001613'	320 16 0 00 001621'		 ERJMP OVRQT0		;IF FAILED, SKIP IT
BHRLIA.FBSIZC	001614'	505 01 0 00 000012 		HRLI A,.FBSIZ		;NOW SET THE SIZE
BSETOMBC	001615'	476 00 0 00 000002 		SETOM B			;SET ENTIRE WORD
BMOVECEOFPTRC	001616'	200 03 0 00 000000'		MOVE C,EOFPTR		;AND BACK TO ORIGINAL COUNT
BCHFDBC	001617'	104 00 0 00 000064 		CHFDB			;DO IT
BERJMPOVRQT0C	001620'	320 16 0 00 001621'		 ERJMP OVRQT0		;IF FAILED, FILE IS SCREWED UP
BOVRQT0HRRZSAC	001621'	553 00 0 00 000001 	OVRQT0:	HRRZS A			;GET JFN ONLY
BPUSHPAC	001622'	261 17 0 00 000001 		PUSH P,A		;SAVE JFN
BHRLZSAC	001623'	517 00 0 00 000001 		HRLZS A			;PUT JFN INTO LEFT HALF
BMOVX..MX1.IFN.IF..MX2IFE..MX1..MX2MOVEIB..MX1C	001624'	201 02 0 00 001000 		MOVX B,^D512		;ALL SHORT FILE PAGES
BIFE..MX2IFE..MX2IFE..MX2IFE..MX2UFPGSC	001625'	104 00 0 00 000525 		UFPGS			;UPDATE FILE PAGES TO DISK
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001626'	320 16 0 00 003551'		 JERR <MAILER UFPGS% ERROR IN OVRQT0 ROUTINE>
BPOPPAC	001627'	262 17 0 00 000001 		POP P,A			;GET THE JFN BACK
BHRRZSAC	001630'	553 00 0 00 000001 		HRRZS A			;Clear left half bits
BCLOSFC	001631'	104 00 0 00 000022 		CLOSF			;CLOSE THE FILE
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001632'	320 16 0 00 003573'		 JERR <MAILER CLOSF% ERROR IN OVRQT0 ROUTINE>
BMOVSIBNOACKQC	001633'	205 02 0 00 000001 		MOVSI B,NOACKQ		;QUOTA FAILURE
BJRSTOOPSC	001634'	254 00 0 00 001640'		JRST OOPS		;AND DONE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 16
MAILER	MAC	17-Jul-84 20:30	

BC
BC
BC					;ROUTINES TO ADD ERROR ENTRIES TO RETURN MESSAGE. AN ENTRY IS OF
BC					;THE FORM:
BC					;	WORD 0		FLAGS,,CODE
BC					;	WORD 1		USER I.D.
BC					;THE FLAGS DEFINE THE TYPE OF THE FAILURE. IF NOACKB IS SET IN THE
BC					;FLAGS, THE CODE WROD IS A STANDARD JSYS ERROR CODE OR A 0
BC					;IF AN INDETERMINATE ERROR OCCURRED.
BC
BOOPS2MOVEIBAC	001635'	201 02 0 01 000000 	OOPS2:	MOVEI B,0(A)		;GET ERROR CODE
BTLOABNOACKBC	001636'	665 02 0 00 000000 		TLOA B,NOACKB		;STANDARD ERROR CODE WITH RH CODE TOO
BOOPS1MOVSIBNOACKBC	001637'	205 02 0 00 000000 	OOPS1:	MOVSI B,NOACKB		;STAMDARD ERROR CODE
BOOPSAOSW1ERRORSC	001640'	350 06 0 00 000062'	OOPS:	AOS W1,ERRORS
BMOVEMBERRSTKW1C	001641'	202 02 0 06 000064'		MOVEM B,ERRSTK-1(W1)	;PUT IT IN
BAOSW1ERRORSC	001642'	350 06 0 00 000062'		AOS W1,ERRORS
BMOVEBDC	001643'	200 02 0 04 777777 		MOVE B,-1(D)		;GET USER CODE
BMOVEMBERRSTKW1C	001644'	202 02 0 06 000064'		MOVEM B,ERRSTK-1(W1)	;STORE IT
BJRSTSNDOFFC	001645'	254 00 0 00 001240'		JRST SNDOFF
BDELFILSKIPNAJFNC	001646'	336 01 0 00 000036'	DELFIL:	SKIPN A,JFN		;FILE TO DELETE?
BPOPJPC	001647'	263 17 0 00 000000 		POPJ P,			;NO. GO BACK IMMEDIATELY
BPUSHPBC	001650'	261 17 0 00 000002 		PUSH P,B		;SAVE BUFFER POINTER
BMOVEBFLAGWDC	001651'	200 02 0 00 000004'		MOVE B,FLAGWD		;GET FLAG WORD
BTRNNBC	001652'	606 02 0 00 000001 		TRNN B,1		;WANT IT DELETED?
BDELFC	001653'	104 00 0 00 000026 		DELF			;YES. SO DO IT
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001654'	320 16 0 00 003615'		 JERR <MAILER DELF% ERROR IN DELFIL ROUTINE>
BMOVEAJFNC	001655'	200 01 0 00 000036'		MOVE A,JFN		;GET JFN BACK IF IT FAILED
BCLOSFC	001656'	104 00 0 00 000022 		CLOSF			;AND CLOSE IT
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	001657'	320 16 0 00 003637'		 JERR <MAILER CLOSF% ERROR IN DELFIL ROUTINE>
BSETZMJFNC	001660'	402 00 0 00 000036'		SETZM JFN		;NO MORE FILE
BPOPPBC	001661'	262 17 0 00 000002 		POP P,B			;GET IT BACK
BPOPJPC	001662'	263 17 0 00 000000 		POPJ P,			;ALL DONE THIS OPERATION
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 17
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;ROUTINE TO CONVERT A USER NUMBER INTO A DIRECTORY NUMBER.
BC					;ACCEPTS:	A/ USER NUMBER
BC					;RETURNS:	+1 WITH 	A/DIRECTORY NUMBER
BC
BUSRDIRMOVEBAC	001663'	200 02 0 00 000001 	USRDIR:	MOVE B,A		;MOVE USER NUMBER
BMOVEAPOINTUSRBUFC	001664'	200 01 0 00 003651'		MOVE A,[POINT 7,USRBUF,27] ;WHERE TO FORM STRING
BDIRSTC	001665'	104 00 0 00 000041 		DIRST			;GET THE USER NAME
BJRSTPOPJ1C	001666'	254 00 0 00 001703'		 JRST POPJ1		;WHO KNOWS HOW THIS CAN HAPPEN
BMOVEIBC	001667'	201 02 0 00 000076 		MOVEI B,">"		;TO TIE IT OFF
BIDPBBAC	001670'	136 02 0 00 000001 		IDPB B,A		;END OF STRING
BSETZBC	001671'	400 02 0 00 000000 		SETZ B,
BIDPBBAC	001672'	136 02 0 00 000001 		IDPB B,A		;FINAL STRING
BHRROIBUSRBUFC	001673'	561 02 0 00 000047'		HRROI B,USRBUF		;THE WHOLE THING
BMOVXRC%EMO..MX1.IFN.IF..MX2IFE..MX1IFE..MX2IFE..MX1..MX2MOVSIA..MX1C	001674'	205 01 0 00 000001 		MOVX A,RC%EMO		;GET THE NUMBER
BIFE..MX2IFE..MX2IFE..MX2RCDIRC	001675'	104 00 0 00 000553 		RCDIR			;GET IT
BERJMPPOPJ1C	001676'	320 16 0 00 001703'		 ERJMP POPJ1		;WHO KNOWS
BTXNERC%AMBRC%NOM..TX1.IFN.IF..TX2IFE..TX1IFE..TX2IFE..TX1..TX2TLNEA..TX1C	001677'	603 01 0 00 060000 		TXNE A,RC%AMB!RC%NOM	;DID IT FIND IT?
BIFE..TX2IFE..TX2IFE..TX2JRSTPOPJ1C	001700'	254 00 0 00 001703'		JRST POPJ1		;NO. BOMB OUT
BMOVEACC	001701'	200 01 0 00 000003 		MOVE A,C		;THE NUMBER
BAOSPC	001702'	350 00 0 17 000000 		AOS (P)			;SKIP RETURN
BPOPJ1RETC	001703'	263 17 0 00 000000 	POPJ1:	RET			;AND DONE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 18
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;ALL MESSAGES SENT. NOW SEND OFF THE REPLY.
BC
BNACKSETZMERRORSC	001704'	402 00 0 00 000062'	NACK:	SETZM ERRORS
BPUSHJPDELFILC	001705'	260 17 0 00 001646'		PUSHJ P,DELFIL		;GET RID OF THE INPUT FILE
BMOVEIWNOACKC	001706'	201 05 0 00 000200 		MOVEI W,<NOACK>B29	;TOTAL WIPEOUT
BSKIPAC	001707'	334 00 0 00 000000 		SKIPA
BFINISSETZWC	001710'	400 05 0 00 000000 	FINIS:	SETZ W,
BSKIPEERRORSC	001711'	332 00 0 00 000062'		SKIPE ERRORS		;ANY ERRORS FOUND?
BMOVEIWNOACK1C	001712'	201 05 0 00 000100 		MOVEI W,<NOACK1>B29	;YESS. SAY SO
BMOVEW1MYPIDC	001713'	200 06 0 00 000063'		MOVE W1,MYPID
BMOVEW2SAVPIDC	001714'	200 07 0 00 000035'		MOVE W2,SAVPID		;WHO SENT IT
BHRLW3ERRORSC	001715'	504 10 0 00 000062'		HRL W3,ERRORS		;GET COUNT
BSKIPNERRORSC	001716'	336 00 0 00 000062'		SKIPN ERRORS
BMOVSIW3C	001717'	205 10 0 00 000001 		MOVSI W3,1		;MUST BE A MESSSAGE
BHRRIW3ERRSTKC	001720'	541 10 0 00 000065'		HRRI W3,ERRSTK		;COMPLETE THE MESSSAGE
BSKIPESENDQC	001721'	332 00 0 00 000064'		SKIPE SENDQ		;A SEND QUEUE AROUND?
BJRSTQUEITC	001722'	254 00 0 00 001760'		JRST QUEIT		;YES. GO QUEUE THIS ONE
BMOVEIAC	001723'	201 01 0 00 000004 		MOVEI A,4
BMOVEIBWC	001724'	201 02 0 00 000005 		MOVEI B,W
BSENDMMSENDC	001725'	104 00 0 00 000510 	SENDM:	MSEND			;SEND IT OFF
BJRSTCAIEAIPCFX4C						 JRST [	CAIE A,IPCFX4	;PID DROPPED?
BCAINAIPCFX5C							CAIN A,IPCFX5	;OR DISABLED?
BJRSTC							JRST .+1	;YES
BJRSTADDQC	001726'	254 00 0 00 003652'			JRST ADDQ]	;NO. ADD IT TO THE QUEUE
BCAINBWC	001727'	306 02 0 00 000005 		CAIN B,W		;FROM THE QUEUE?
BJRSTMAINC	001730'	254 00 0 00 001020'		JRST MAIN		;NO. GO ON
BMOVEIBW4C	001731'	201 02 0 11 000000 		MOVEI B,(W4)		;THE PACKET
BC
BC					;REQUEST FORM SEND Q
BKILLITHRRZABC	001732'	550 01 0 02 777774 	KILLIT:	HRRZ A,-4(B)		;QUEUE LINK
BHRRMASENDQC	001733'	542 01 0 00 000064'		HRRM A,SENDQ
BSKIPNAC	001734'	336 00 0 00 000001 		SKIPN A
BSETZMSENDQC	001735'	402 00 0 00 000064'		SETZM SENDQ		;QUEU IS EMPTY
BMOVEIABC	001736'	201 01 0 02 777774 		MOVEI A,-4(B)		;BLOCK HEAD
BCALLDEALLC	001737'	260 17 0 00 000703'		CALL DEALL		;RELEASE IT
BSKIPNSENDQC	001740'	336 00 0 00 000064'		SKIPN SENDQ		;MORE ON THE QUEUE?
BJRSTMAINC	001741'	254 00 0 00 001020'		JRST MAIN		;NO. ALL DONE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 19
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;ROUTINES TO HANDLE SEND FAILURES
BC
BDOQ1MOVEIAC	001742'	201 01 0 00 000764 	DOQ1:	MOVEI A,^D500		;DELAY FOR A WHILE
BDISMSC	001743'	104 00 0 00 000167 		DISMS			;""
BDOQHRRZBSENDQC	001744'	550 02 0 00 000064'	DOQ:	HRRZ B,SENDQ		;TOP OF SEND QUEUE
BMOVEW1BC	001745'	200 06 0 02 000002 		MOVE W1,2(B)		;HEADER
BMOVEW3BC	001746'	200 10 0 02 000001 		MOVE W3,1(B)		;RECEIVE QUEUE
BMOVEW2MYPIDC	001747'	200 07 0 00 000063'		MOVE W2,MYPID
BHLRZW4BC	001750'	554 11 0 02 000000 		HLRZ W4,(B)		;COUNT
BSUBIW4C	001751'	275 11 0 00 000004 		SUBI W4,4		;SIZE OF THE MESSAGE
BHRLZSW4C	001752'	517 00 0 00 000011 		HRLZS W4
BMOVEIW4BC	001753'	201 11 0 02 000004 		MOVEI W4,4(B)		;WHERE THE MESSAGE STARTS
BMOVEIBW1C	001754'	201 02 0 00 000006 		MOVEI B,W1		;WHERE THE HEADER IS
BJRSTSENDMC	001755'	254 00 0 00 001725'		JRST SENDM		;SEND IT
BADDQCAIEBWC	001756'	302 02 0 00 000005 	ADDQ:	CAIE B,W		;NEED TO QUEU IT?
BJRSTNOQC	001757'	254 00 0 00 001763'		JRST NOQ		;NO
BQUEITCALLONQC	001760'	260 17 0 00 002000'	QUEIT:	CALL ONQ		;YES. PUT IT ON THE QUEUE
BJRSTHRROIAASCIZC						 JRST [	HRROI A,[ASCIZ /
BC					?MAILER: FREE SPACE EXHAUSTED
BC					/]
BPSOUTC							PSOUT
BMOVEIAC							MOVEI A,4	;Get packet size
BMOVEIBWC							MOVEI B,W	; and address
BMSEND%C							MSEND%		;release the waiting mailer
BERJMPDOQ1C							 ERJMP DOQ1	;Ignore errors
BJRSTDOQC	001761'	254 00 0 00 003665'			JRST DOQ ]	;And move on to next one
BJRSTDOQC	001762'	254 00 0 00 001744'		JRST DOQ		;GO SEND SOME
BNOQCAIEAIPCFX7C	001763'	302 01 0 00 601024 	NOQ:	CAIE A,IPCFX7		;HISS FAULT?
BJRSTMAINC	001764'	254 00 0 00 001020'		JRST MAIN		;NO. GO DO MORE INPUT
BMOVEBW4C	001765'	200 02 0 00 000011 		MOVE B,W4		;GETPOINTER
BAOSW4BC	001766'	350 11 0 02 777777 		AOS W4,-1(B)		;UP RETRY COUNT
BCAILW4MAXTRYC	001767'	301 11 0 00 000005 		CAIL W4,MAXTRY		;MAXIMUM RETRYS/
BJRSTKILLITC	001770'	254 00 0 00 001732'		JRST KILLIT		;YES. ZAP IT
BHRRZW4BC	001771'	550 11 0 02 777774 		HRRZ W4,-4(B)		;UNQUEUE IT
BHRRMASENDQC	001772'	542 01 0 00 000064'		HRRM A,SENDQ		;PUT NEXT ON THE TOP
BSKIPNAC	001773'	336 00 0 00 000001 		SKIPN A			;QUEUE NOW EMPTY?
BSETZMSENDQC	001774'	402 00 0 00 000064'		SETZM SENDQ		;YES
BMOVEIABC	001775'	201 01 0 02 777774 		MOVEI A,-4(B)		;BLOCK HEAD
BCALLINITQC	001776'	260 17 0 00 002017'		CALL INITQ		;PUT IT ON THE QUEUE
BJRSTMAINC	001777'	254 00 0 00 001020'		JRST MAIN		;TRY MORE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 20
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;THIS ROUITNE QUEUES ENTRIES ON THE SEND QUEUE
BC
BONQHLRZBW3C	002000'	554 02 0 00 000010 	ONQ:	HLRZ B,W3		;SIZE NEEDED
BMOVEIABC	002001'	201 01 0 02 000004 		MOVEI A,4(B)		;TOTAL SIZE NEEDED
BPUSHPWC	002002'	261 17 0 00 000005 		PUSH P,W		;SAVE HEADER
BCALLALLOCC	002003'	260 17 0 00 000643'		CALL ALLOC		;GET SPACE
BJRSTPOPPWC						 JRST [ POP P,W		;Restore Stack
BRETC	002004'	254 00 0 00 003674'			RET ]		;and return bad.
BSETZMAC	002005'	402 00 0 01 000003 		SETZM 3(A)		;INIT RETRY COUNT
BPOPPWC	002006'	262 17 0 00 000005 		POP P,W
BMOVEMWAC	002007'	202 05 0 01 000002 		MOVEM W,2(A)		;SAVE HEADER
BMOVEWSAVPIDC	002010'	200 05 0 00 000035'		MOVE W,SAVPID
BMOVEMWAC	002011'	202 05 0 01 000001 		MOVEM W,1(A)		;SAVE DESTINATION PID
BMOVSIWERRSTKC	002012'	205 05 0 00 000065'		MOVSI W,ERRSTK		;WHERE MESSAGE COMES FORM
BHRRIWBC	002013'	541 05 0 02 000004 		HRRI W,4(B)		;WHERE IT IS GOING
BMOVEW1ERRORSC	002014'	200 06 0 00 000062'		MOVE W1,ERRORS		;NUMBER OF WORDS
BADDIW1BC	002015'	271 06 0 02 777777 		ADDI W1,-1(B)		;LAST WORD STORED
BBLTWW1C	002016'	251 05 0 06 000000 		BLT W,(W1)		;DO IT
BINITQHLRZCSENDQC	002017'	554 03 0 00 000064'	INITQ:	HLRZ C,SENDQ		;GET TAIL
BHRLMASENDQC	002020'	506 01 0 00 000064'		HRLM A,SENDQ		;NEW TAIL
BSKIPNCC	002021'	336 00 0 00 000003 		SKIPN C			;QUEUE EMPTY?
BMOVEICSENDQC	002022'	201 03 0 00 000064'		MOVEI C,SENDQ		;YES
BHRRMACC	002023'	542 01 0 03 000000 		HRRM A,(C)		;AMKE THE LINK
BAOSPC	002024'	350 00 0 17 000000 		AOS (P)
BC
BRETC	002025'	263 17 0 00 000000 		RET			;AND DONE
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page 21
MAILER	MAC	17-Jul-84 20:30	

BC
BC					;ROUTINES TO MANIPULATE LOCAL CAPS
BC
BC					;TURN OFF LOCAL CAPS
BC
BCAPOFFSAVEAC.NACIRPPUSHPAC	002026'	261 17 0 00 000001 	CAPOFF:	SAVEAC <A,B,C>
B.NAC.NACPUSHPBC	002027'	261 17 0 00 000002 
B.NAC.NACPUSHPCC	002030'	261 17 0 00 000003 
B.NAC.NAC.NAC.N1SETMI.A16CAIAAOS.N1PIRP.N1.N1MOVEA.N1P.N1.N1MOVEB.N1P.N1.N1MOVEC.N1PSUBP.NAC.NAC.NACPOPJPC	002031'	415 16 0 00 003434'
BPUSHP.A16C	002032'	261 17 0 00 000016 
BMOVEIA.FHSLFC	002033'	201 01 0 00 400000 		MOVEI A,.FHSLF		;SELF
BRPCAPC	002034'	104 00 0 00 000150 		RPCAP			;GET CURRENT CAPS
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	002035'	320 16 0 00 003706'		 JERR <MAILER RPCAP% ERROR IN CAPOFF ROUTINE>
BHLLZSCC	002036'	513 00 0 00 000003 		HLLZS C			;TURN OFF SPECIAL CAPS
BEPCAPC	002037'	104 00 0 00 000151 		EPCAP			;DO IT
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	002040'	320 16 0 00 003730'		 JERR <MAILER EPCAP% ERROR IN CAPOFF ROUTINE>
BRETC	002041'	263 17 0 00 000000 		RET			;DONE
BC
BC					;TURN ON LOCAL CAPS
BC
BCAPONSAVEAC.NACIRPPUSHPAC	002042'	261 17 0 00 000001 	CAPON:	SAVEAC <A,B,C>
B.NAC.NACPUSHPBC	002043'	261 17 0 00 000002 
B.NAC.NACPUSHPCC	002044'	261 17 0 00 000003 
B.NAC.NAC.NAC.N1SETMI.A16CAIAAOS.N1PIRP.N1.N1MOVEA.N1P.N1.N1MOVEB.N1P.N1.N1MOVEC.N1PSUBP.NAC.NAC.NACPOPJPC	002045'	415 16 0 00 003434'
BPUSHP.A16C	002046'	261 17 0 00 000016 
BMOVEIA.FHSLFC	002047'	201 01 0 00 400000 		MOVEI A,.FHSLF
BRPCAPC	002050'	104 00 0 00 000150 		RPCAP			;GET LOCAL CAPS
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	002051'	320 16 0 00 003752'		 JERR <MAILER RPCAP% ERROR IN CAPON ROUTINE>
BMOVECBC	002052'	200 03 0 00 000002 		MOVE C,B		;GET ALL CAPS
BEPCAPC	002053'	104 00 0 00 000151 		EPCAP
BJERRERJMPPUSHPAPUSHPBPUSHPCCALLJSERR0TMSGHRROI.AC1ASCIZPSOUTPOPPCPOPPBPOPPAJRSTC	002054'	320 16 0 00 003774'		 JERR <MAILER EPCAP% ERROR IN CAPON ROUTINE>
BRETC	002055'	263 17 0 00 000000 		RET			;DONE
BC
BC					;Count the bytes in an asciz string
BC					;Call:	A/ Byte pointer to string
BC					;	CALL COUNTS
BC					;Return +1: always
BC					;	A/ Count
BCOUNTSMOVEBAC	002056'	200 02 0 00 000001 	COUNTS:	MOVE B,A		;Save the byte pointer
BSETZAC	002057'	400 01 0 00 000000 		SETZ A,			;Clear the counter
BCOUNT0ILDBCBC	002060'	134 03 0 00 000002 	COUNT0:	ILDB C,B		;Get a byte
BJUMPECRC	002061'	322 03 0 00 000000*		JUMPE C,R		;If null, return the count
BAOJAACOUNT0C	002062'	344 01 0 00 002060'		AOJA A,COUNT0		; Else, increment count and loop
BC
BENDENTVECC		000003	000640'			END <3,,ENTVEC>
VI%DEC	UNASSIGNED, DEFINED AS IF EXTERNAL

?1 ERROR DETECTED

PROGRAM BREAK IS 004006
CPU TIME USED 00:07.131

89P CORE USED
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page S-1
MAILER	MAC	17-Jul-84 20:30		SYMBOL TABLE

A		000001	spd	FINIS		001710'		NOPE		000661'		STACK		000010'		
ADD1		000401'		FLAGWD		000004'		NOQ		001763'		SYSCOD	777777	777776	spd	
ADDQ		001756'		FREHD		000003'		NOSYS1		001307'		SYSDI1		000007'		
AIC	104000	000131	int	FRESIZ		005000	spd	NOSYS2		001303'		SYSDIR		000006'		
ALLIN		001162'		FRMCNT		000440'		NOSYS3		001257'		TOPDIR		001453'		
ALLIN0		001175'		FRMMSG		000403'		NOTINF		001073'		TT%ALK		001000	sin	
ALLOC		000643'		FRMNAM		000402'		NOUT	104000	000224	int	TTMSG	104000	000775	int	
AREA		315322	spd	FRMSTR		000433'		ODTIM	104000	000220	int	UF%NOW	400000	000000	sin	
B		000002	spd	GETER%	104000	000012	int	OKSIZ		001332'		UFPGS	104000	000525	int	
BIGBUF		012062	spd	GETJI	104000	000507	int	ONQ		002000'		UPDFIL		001503'		
BIN	104000	000050	int	GETSIZ		000001'		OOPS		001640'		USEIT		000666'		
BOUT	104000	000051	int	GJ%DEL	001000	000000	sin	OOPS1		001637'		USERS		001000	spd	
C		000003	spd	GJ%OLD	100000	000000	sin	OOPS2		001635'		USRBLK		011000		
CALL	260740	000000		GJ%SHT	000001	000000	sin	OPENF	104000	000021	int	USRBUF		000047'		
CAPOFF		002026'		GOTONE		001065'		OPNX9		600130	sin	USRDIR		001663'		
CAPON		002042'		GTFDB	104000	000063	int	OT%TMZ	000020	000000	sin	VEDIT		000026	spd	
CAPX1		600615	sin	GTINF		000040'		OVER		001222'		VI%DEC		000000	udf	
CF%NUD	400000	000000	sin	GTJFN	104000	000020	int	OVRQT0		001621'		VMAILR	000000000000#	pol	
CHFDB	104000	000064	int	GTJIX3		601015	sin	OVRQT1		001555'		VMAJOR		000006	spd	
CHKAC	104000	000521	int	GTSTS	104000	000024	int	OVRQT2		001607'		VMINOR		000000	spd	
CHKBLK		000441'		HALTF	104000	000170	int	OVRQTA		001554'		VWHO		000000	spd	
CHKEOF		001536'		HERE		000712'		P		000017	spd	W		000005	spd	
CHKFAI		002334'		INCDIR		001502'		PMAP	104000	000056	int	W1		000006	spd	
CHNTAB		000400'		INITQ		002017'		POPJ1		001703'		W2		000007	spd	
CK%JFN	400000	000000	sin	IOX4		600220	sin	PSOUT	104000	000076	int	W3		000010	spd	
CLOSF	104000	000022	int	IPCFX4		601021	sin	QUEIT		001760'		W4		000011	spd	
CONDIR		000005'		IPCFX5		601022	sin	R		002061'	ext	W5		000012	spd	
COUNT0		002060'		IPCFX7		601024	sin	RC%AMB	020000	000000	sin	W6		000013	spd	
COUNTS		002056'		JFN		000036'		RC%EMO	000001	000000	sin	WAIT	104000	000306	int	
D		000004	spd	JSERR0		003777'	ext	RC%NOM	040000	000000	sin	$TEMP2	000017	777776	spd	
DEALL		000703'		KILLIT		001732'		RCDIR	104000	000553	int	..0005		001452'	spd	
DEBRK	104000	000136	int	LEVTAB		000375'		RCUSR	104000	000554	int	..0013		001553'	spd	
DEFPKT		000030'		LNKDWN		000726'		RESET	104000	000147	int	..CSC		000004	spd	
DELF	104000	000026	int	LOOK		000645'		RET	263740	000000		..CSN		000003	spd	
DELFIL		001646'		LOOK1		000704'		RFBSZ	104000	000045	int	..MX1	000001	000000	spd	
DIRST	104000	000041	int	MAIL1		001012'		RFMOD	104000	000107	int	..MX2		000001	spd	
DIRST%	104000	000041	int	MAILER		000747'		RFPTR	104000	000043	int	..PST		000003	spd	
DISMS	104000	000167	int	MAIN		001020'		RLJFN	104000	000023	int	..STKN		000001	spd	
DOQ		001744'		MAXTRY		000005	spd	RPCAP	104000	000150	int	..STKQ		000002	spd	
DOQ1		001742'		MESS		010000	spd	SAV		000037'		..STKR		000010	spd	
EIR	104000	000126	int	MRECV	104000	000511	int	SAVPID		000035'		..TX1	060000	000000	spd	
ENDPKT		000035'		MSEND	104000	000510	int	SC%OPR		200000	sin	..TX2		000001	spd	
ENTVEC		000640'		MSEND%	104000	000510	int	SC%WHL		400000	sin	.A16		000016	spd	
EOFPTR		000000'		MTOPR	104000	000077	int	SEEDWN		000732'		.AC1		000001	spd	
EPCAP	104000	000151	int	MUTIL	104000	000512	int	SENDM		001725'		.CKACD		000002	sin	
ERCAL	320740	000000	int	MYPID		000063'		SENDQ		000064'		.CKAEC		000003	sin	
ERJMP	320700	000000	int	NACK		001704'		SFBSZ	104000	000046	int	.CKALD		000001	sin	
ERRORS		000062'		NO%LFL	100000	000000	sin	SFPTR	104000	000027	int	.CKAUD		000004	sin	
ERRSTK		000065'		NO%ZRO	040000	000000	sin	SFUST	104000	000551	int	.CKAWR		000001	sin	
FB%BSZ	007700	000000	sin	NOACK		000002	spd	SIN	104000	000052	int	.FBBYV		000011	sin	
FB%DEL	040000	000000	sin	NOACK1		000001	spd	SIN%	104000	000052	int	.FBCTL		000001	sin	
FB%PRM	200000	000000	sin	NOACKB		000000	spd	SIR	104000	000125	int	.FBSIZ		000012	sin	
FILBUF		012000	spd	NOACKQ		000001	spd	SIZE		303240	spd	.FHSLF		400000	sin	
FILSIZ		000062	spd	NONE		001053'		SNDOFF		001240'		.IPCSN		000067	spd	
FINAL		000663'		NOP	600000	000000	sin	SOUT	104000	000053	int	.JICPJ		000007	sin	
MAILER	MACRO %53A(1152) 11:30  5-Aug-85 Page S-2
MAILER	MAC	17-Jul-84 20:30		SYMBOL TABLE

.JITNO		000001	sin	
.MORNT		000035	sin	
.MUPIC		000022	sin	
.MUQRY		000020	sin	
.N1		000000	spd	
.NAC		000003	spd	
.SFLWR		000001	sin	
.STKST		001503'	ext