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