mirror of
https://github.com/PDP-10/its.git
synced 2026-03-09 04:19:38 +00:00
223 lines
3.9 KiB
Groff
Executable File
223 lines
3.9 KiB
Groff
Executable File
;;; -*- Midas -*-
|
|
|
|
TITLE CHAOS RFC
|
|
|
|
;;; Gumby, 16.11.86: if started with the uname CHARFS (S for SILENT)
|
|
;;; won't print e.g. [EOF] on TTY. This is mainly useful for programs
|
|
;;; which .VALUE to DDT a CHARFC command (e.g. WHAT, UFIND).
|
|
|
|
A=1
|
|
B=2
|
|
C=3
|
|
D=4
|
|
E=5
|
|
F=6
|
|
T=7
|
|
TT=10
|
|
SILENT=16
|
|
P=17
|
|
|
|
TYOC=10
|
|
CHSI=11
|
|
CHSO=12
|
|
|
|
PDL: -20,,.
|
|
BLOCK 22
|
|
|
|
DEBUG: 0
|
|
|
|
.INSRT SYSTEM;CHSDEF
|
|
|
|
JCLBUF: BLOCK 100
|
|
-1
|
|
CNMBUF: BLOCK 100 ;Copy contact name
|
|
BUF: BLOCK %CPMXW ;Misc buffer
|
|
|
|
$$HST3==1
|
|
$$HOSTNM==1
|
|
$$SYMLOOK==1
|
|
$$HSTMAP==1
|
|
$$CONNECT==1
|
|
$$ANALYZE==1
|
|
$$CHAOS==1
|
|
.INSRT SYSENG;NETWRK
|
|
|
|
GO: MOVE P,PDL
|
|
.OPEN TYOC,[.UAO,,'TTY]
|
|
.LOSE %LSFIL
|
|
.suset [.rxjname,,a]
|
|
camn a,[sixbit /CHARFS/]
|
|
seto silent,
|
|
MOVEI A,HST3PG
|
|
MOVEI B,CHSI
|
|
PUSHJ P,NETWRK"HSTMAP
|
|
.LOSE
|
|
.BREAK 12,[5,,JCLBUF]
|
|
MOVE A,[440700,,JCLBUF] ;Isolate host name
|
|
GHN: ILDB T,A
|
|
CAIN T,40
|
|
JRST GHN1
|
|
CAIE T,^M
|
|
CAIN T,^C
|
|
JRST NHN
|
|
CAIE T,^_
|
|
JUMPN T,GHN
|
|
NHN: MOVEI TT,[ASCIZ/Usage is: :CHARFC HOST <space> CONTACT NAME/]
|
|
PUSHJ P,ASZOUT
|
|
.LOGOUT 1,
|
|
|
|
GHN1: setz T,
|
|
DPB T,A
|
|
MOVE B,[440700,,CNMBUF] ;Extract contact name and args
|
|
SETOM E ;Upper-caseify flag
|
|
GCN: ILDB T,A
|
|
CAIE T,^M
|
|
CAIN T,^C
|
|
JRST GCN1
|
|
CAIE T,^_
|
|
CAIN T,0
|
|
JRST GCN1
|
|
JUMPGE E,GCN0
|
|
CAIN T,40
|
|
AOJA E,GCN0 ;Space ends upper-case part
|
|
CAIL T,"a
|
|
CAILE T,"z
|
|
JRST GCN0
|
|
SUBI T,40
|
|
GCN0: IDPB T,B
|
|
JRST GCN
|
|
|
|
GCN1: MOVEI A,JCLBUF
|
|
PUSHJ P,NETWRK"HSTLOOK
|
|
JRST [ MOVEI TT,[ASCIZ/Host not found: /]
|
|
PUSHJ P,ASZOUT
|
|
MOVEI TT,JCLBUF
|
|
PUSHJ P,ASZOUT
|
|
.LOGOUT 1, ]
|
|
MOVEM A,HOST'
|
|
MOVEI A,CHSI
|
|
MOVE B,HOST
|
|
MOVEI C,CNMBUF
|
|
MOVEI D,10
|
|
MOVEI TT,%CORFC
|
|
PUSHJ P,OPEN ;Start things up
|
|
JRST NETERR ;Lost
|
|
CAIE TT,%CSOPN
|
|
JRST NOTOPN ;Started but didn't get open
|
|
;Open, copy out whatever string it gives, to EOF
|
|
jumpn silent,opn
|
|
MOVEI TT,[ASCIZ/Connection open:
|
|
/]
|
|
PUSHJ P,ASZOUT
|
|
OPN: MOVE TT,[440700,,BUF] ;Truncate to 7-bit codes
|
|
MOVEI T,%CPMXC
|
|
.CALL [ SETZ ? SIXBIT/SIOT/ ? MOVEI CHSI ? TT ? SETZ T ]
|
|
.LOSE %LSSYS
|
|
SUBI T,%CPMXC
|
|
MOVNS A,T
|
|
MOVE TT,[440700,,BUF]
|
|
.CALL [ SETZ ? SIXBIT/SIOT/ ? MOVEI TYOC ? TT ? SETZ T ]
|
|
.LOSE %LSSYS
|
|
CAIN A,%CPMXC
|
|
JRST OPN
|
|
skipe silent
|
|
.logout 1,
|
|
MOVEI TT,[ASCIZ/[EOF]/]
|
|
PUSHJ P,ASZOUT
|
|
.LOGOUT 1,
|
|
|
|
RESET: MOVSI T,RESET1 ;Reset the buffer for network debugging
|
|
HRR T,C
|
|
BLT T,2(C)
|
|
MOVEI D,5*12.
|
|
MOVE F,[260700,,.+6]
|
|
XCT @(P)
|
|
.LOSE %LSSYS ;Failed to open
|
|
POPJ P,
|
|
|
|
RESET1: 512131,,547650 ;Reset the buffer for right thing
|
|
425330,,444646
|
|
455012,,242602
|
|
421004,,327120
|
|
502451,,743542
|
|
201404,,24206
|
|
442031,,751564
|
|
426550,,146132
|
|
516132,,253212
|
|
511331,,747122
|
|
245006,,20142
|
|
202151,,747400
|
|
|
|
NOTOPN: CAIE TT,%CSCLS
|
|
JRST NETERR
|
|
.CALL [ SETZ ? 'WHYINT ? MOVEI CHSI ? MOVEM TT ? MOVEM TT ? SETZM TT ]
|
|
.LOSE %LSSYS
|
|
HLRZS TT ;Number of input packets available
|
|
JUMPE TT,NETERR
|
|
.CALL [ SETZ ? 'PKTIOT ? MOVEI CHSI ? SETZI BUF ]
|
|
.LOSE %LSSYS
|
|
LDB T,[$CPKOP BUF]
|
|
MOVEI TT,[ASCIZ/Closed: /]
|
|
CAIN T,%COCLS
|
|
JRST NOTOP1
|
|
MOVEI TT,[ASCIZ/Lost: /]
|
|
CAIN T,%COLOS
|
|
JRST NOTOP1
|
|
MOVEI TT,[ASCIZ/Forwarded: /]
|
|
CAIN T,%COFWD
|
|
JRST NOTOP1
|
|
MOVEI TT,[ASCIZ/Answered: /]
|
|
CAIN T,%COANS
|
|
JRST NOTOP1
|
|
RANPKT: PUSHJ P,OCTOUT
|
|
MOVEI TT,[ASCIZ/ type random packet: /]
|
|
NOTOP1: skipn silent
|
|
PUSHJ P,ASZOUT
|
|
LDB A,[$CPKNB BUF]
|
|
MOVE B,[440800,,%CPKDT+BUF]
|
|
STROU: SOJL A,[.LOGOUT 1,]
|
|
ILDB T,B
|
|
ANDI T,177
|
|
.IOT TYOC,T
|
|
JRST STROU
|
|
|
|
OPEN: MOVE F,[440700,,[ASCII/INITIALIZE/]] ;Opcode String (if needed)
|
|
MOVE T,(C)
|
|
CAMN T,[SIXBIT/BUH,Q/]
|
|
PUSHJ P,RESET
|
|
JRST NETWRK"CHACN0
|
|
.CALL [ SETZ ? SIXBIT/SIOT/ ? MOVEI 1(A) ? F ? SETZ D ]
|
|
SKIPA TT,[%COLOS]
|
|
AOS (P)
|
|
.IOT CHSO,[215] ;Final opcode
|
|
.CALL [ SETZ ? SIXBIT/FORCE/ ? SETZI 1(A) ]
|
|
SOS (P)
|
|
POPJ P,
|
|
|
|
NETERR: PUSHJ P,NETWRK"ANALYZE
|
|
JFCL
|
|
.LOGOUT 1,
|
|
|
|
OCTOUT: IDIVI T,8
|
|
HRLM TT,(P)
|
|
SKIPE T
|
|
PUSHJ P,OCTOUT
|
|
HLRZ T,(P)
|
|
ADDI T,'0
|
|
PUTCHR: .IOT TYOC,T
|
|
CPOPJ: POPJ P,
|
|
|
|
ASZOUT: HRLI TT,440700
|
|
ASZOU1: ILDB T,TT
|
|
JUMPE T,CPOPJ
|
|
.IOT TYOC,T
|
|
JRST ASZOU1
|
|
|
|
CONSTANTS
|
|
VARIABLES
|
|
|
|
HST3PG==<.+1777>/2000
|
|
|
|
END GO
|
|
|