1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-02-19 13:55:12 +00:00
Files
PDP-10.stacken/files/stacken-tape-backup/dskb:10_335/smtp.mac
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

168 lines
4.3 KiB
Plaintext

TITLE SMTP - Simple Mail Transfer Protocol.
SEARCH MACTEN,UUOSYM
DEFINE ERROR(MESSAGE)<
JRST[ MOVEI 2,[
ASCIZ MESSAGE]
JRST NNHALT]>
START: RESET
MOVE 17,[
IOWD STKLEN,STKBLK]
MOVEI 1,CONBLK
MOVEM 1,NSPBLK+.NSAA1
MOVX 1,NS.WAI!INSVL.(.NSFEA,NS.AFN)!3
MOVEM 1,NSPBLK+.NSAFN
MOVEI 1,NSPBLK
NSP. 1,
ERROR "Unable to open DECnet connection"
LOOP: MOVE 1,NSPBLK+.NSACH
TXNN 1,NS.NDA
JRST NOTTYO
DMOVE 1,[
EXP BUFLEN
POINT 7,BUFBLK]
DMOVEM 1,NSPBLK+.NSAA1
MOVX 1,NS.WAI!INSVL.(.NSFDR,NS.AFN)!4
MOVEM 1,NSPBLK+.NSAFN
MOVEI 1,NSPBLK
NSP. 1,
ERROR "Unable to read from DECnet connection"
MOVE 1,NSPBLK+.NSAA2
SETZ 2,
IDPB 2,1
OUTSTR BUFBLK
JRST LOOP
NOTTYO: TXC 1,INSVL.(.NSSDR,NS.STA)
TXNN 1,NS.STA
JRST NOMORE
MOVX 1,HB.DIN!HB.RTL!^D500
HIBER 1,
HALT
SKPINL
JRST NOTTYI
DMOVE 1,[
EXP 1
POINT 8,2,27]
DMOVEM 1,NSPBLK+.NSAA1
MOVX 1,NS.WAI!NS.EOM!INSVL.(.NSFDS,NS.AFN)!4
MOVEM 1,NSPBLK+.NSAFN
MOVEI 1,NSPBLK
INCHWL 2
NSP. 1,
ERROR "Unable to write to DECnet connection"
JRST LOOP
NOTTYI: MOVX 1,NS.WAI!INSVL.(.NSFRS,NS.AFN)!2
MOVEM 1,NSPBLK+.NSAFN
MOVEI 1,NSPBLK
NSP. 1,
ERROR "Unable to obtain DECnet connection status"
JRST LOOP
NOMORE: OUTSTR[ ASCIZ "
[SMTP: Connection closed]"]
MONRT.
JRST START
NNHALT: OUTSTR[ ASCIZ "
?SMTP: "]
OUTSTR (2)
OUTSTR[ ASCIZ ", "]
MOVE 2,[
XWD -NSPLEN,NSPERR]
NNH.01: HLRZ 3,(2)
CAME 3,1
AOBJN 2,NNH.01
JUMPGE 2,NNH.02
HRRZ 3,(2)
OUTSTR (3)
JRST NNH.03
NNH.02: OUTSTR[ ASCIZ "error "]
PUSHJ 17,NNOCTA
NNH.03: CLRBFI
MONRT.
HRRZ 1,.JBSA
JRST (1)
NNOCTA: IDIVI 1,^D8
HRLM 2,(17)
SKIPE 1
PUSHJ 17,NNOCTA
HLRZ 2,(17)
ADDI 2,"0"
OUTCHR 2
POPJ 17,
NSPERR: XWD NSABE%,[ASCIZ "argument block format error"]
XWD NSALF%,[ASCIZ "allocation failure"]
XWD NSBCN%,[ASCIZ "bad channel number"]
XWD NSBFT%,[ASCIZ "bad format type in process block"]
XWD NSCFE%,[ASCIZ "connect block format error"]
XWD NSIDL%,[ASCIZ "interrupt data too long"]
XWD NSIFM%,[ASCIZ "illegal flow control mode"]
XWD NSILF%,[ASCIZ "illegal function"]
XWD NSJQX%,[ASCIZ "job quota exhausted"]
XWD NSLQX%,[ASCIZ "link quota exhausted"]
XWD NSNCD%,[ASCIZ "no connect data to read"]
XWD NSPIO%,[ASCIZ "percentage input out of bounds"]
XWD NSPRV%,[ASCIZ "no privileges to perform function"]
XWD NSSTB%,[ASCIZ "segment size too big"]
XWD NSUKN%,[ASCIZ "unknown node name"]
XWD NSUXS%,[ASCIZ "unexpected state: unspecified"]
XWD NSWNA%,[ASCIZ "wrong number of arguments"]
XWD NSWRS%,[ASCIZ "function called in wrong state"]
XWD NSCBL%,[ASCIZ "connect block length error"]
XWD NSPBL%,[ASCIZ "process block length error"]
XWD NSSBL%,[ASCIZ "string block length error"]
XWD NSUDS%,[ASCIZ "unexpected state: disconnect sent"]
XWD NSUDC%,[ASCIZ "unexpected state: disconnect confirmed"]
XWD NSUCF%,[ASCIZ "unexpected state: no confidence"]
XWD NSULK%,[ASCIZ "unexpected state: no link"]
XWD NSUCM%,[ASCIZ "unexpected state: no communication"]
XWD NSUNR%,[ASCIZ "unexpected state: no resources"]
XWD NSRBO%,[ASCIZ "rejected by object"]
XWD NSDBO%,[ASCIZ "disconnected by object (when running)"]
XWD NSRES%,[ASCIZ "no resources"]
XWD NSUNN%,[ASCIZ "unrecognized node name"]
XWD NSRNS%,[ASCIZ "remote node shut down"]
XWD NSURO%,[ASCIZ "unrecognized object"]
XWD NSIOF%,[ASCIZ "invalid object name format"]
XWD NSOTB%,[ASCIZ "object too busy"]
XWD NSABM%,[ASCIZ "abort by management"]
XWD NSABO%,[ASCIZ "abort by object"]
XWD NSINF%,[ASCIZ "invalid node name format"]
XWD NSLNS%,[ASCIZ "local node shut down"]
XWD NSACR%,[ASCIZ "access control rejection"]
XWD NSNRO%,[ASCIZ "no response from object"]
XWD NSNUR%,[ASCIZ "node unreachable"]
XWD NSNLK%,[ASCIZ "no link"]
XWD NSDSC%,[ASCIZ "disconnect complete"]
XWD NSIMG%,[ASCIZ "image field too long"]
XWD NSREJ%,[ASCIZ "unspecified reject reason"]
XWD NSBCF%,[ASCIZ "bad combo of ns.eom & ns.wai flags"]
XWD NSADE%,[ASCIZ "address error"]
NSPLEN==.-NSPERR
NSPBLK: BLOCK 4
CONBLK: EXP 4,NODNAM,SRCPDB,DSTPDB
;NODNAM: XWD 6,3
; BYTE (^D8)"R","T","R","0","8","B"
NODNAM: XWD 5,3
BYTE (^D8)"T","O","P","S","Y"
;SRCPDB: EXP 3,1,0
SRCPDB: EXP 5,1,0,0,RAGNAR
RAGNAR: XWD 3,6
BYTE (^D8)"R","A","G","N","A","R"
DSTPDB: EXP 3,0,^D125
BUFBLK: BLOCK <BUFLEN==^D512>/^D5+^D1
STKBLK: BLOCK <STKLEN==20>
END START