1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-24 11:22:36 +00:00
PDP-10.its/src/syseng/ddtdoc.72

480 lines
7.3 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;-*-Midas-*-
Title :DDTDOC - DDT Documentation from .INFO.;DDTORD >
Z=0
A=1 ;General porpoise
B=2
C=3
D=4
E=5
T1=6 ;Transient
T2=7
T3=10
JCL=11
Help=12
Alt=14
Col=15
P=17
TTYo==1
TTYi==2
DSKi==3 ;DDTORD
TEMPi==4
PDLen==10
JCLen==10
Bottom==0 ;Which pages of DDTORD to map in
Top==22.
Length==Top-Bottom+1
Call=<Pushj P,>
Return=<Popj P,>
;;;
;;;;;
;;;
.INSRT SYSEN3;GREN MACROS
;;;
;;;;;
;;;
OTOp: 0 ;One Time Only? True means running off JCL
Echop: 0 ;SLINE echoes what it skips?
Allowp: 0 ;True if allowing Got-TTY-Back interrupts to do something
String: Block 2 ;What you're looking for
ColBP: 0 ;Pointer to start of :-command doc
CtrlBP: 0 ;Pointer to start of control commands
hTemp: 0
CLen: 0
HSName: 0
Sixbit /SYS/
Sixbit /SYS1/
Sixbit /SYS2/
Sixbit /SYS3/
NDirs==.-HSName
Inhale: .Iot TTYi,A
JCLbuf: Block JCLen
-1
PDList: -PDLen,,.
Block PDLen
Tsint: Loc 42
-TsintL,,Tsint
Loc Tsint
P
0 ? 1_TTYi ? 0 ? 0 ? Flush
%PiATY ? 0 ? %PiATY ? 0 ? ReAsk
TsintL==.-Tsint
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Begin: Move P,PDList
.Suset [-4,,[.sOPTION,,[Optint,,] ;New-style interrupts
.sMSK2,,[1_TTYi]
.sMASK,,[%PjATY,,] ;Got-TTY-Back interrupt
.rHSNAME,,HSName]]
Syscal OPEN,[%Clbit,,.uai
%Climm,,TTYi
[Sixbit /TTY/]]
.Lose %LsFil
Move T1,[424642,,424242] ;lc -> UC
Move T2,[234242,,420242] ;^S, ^G intrup
Syscal TTYSET,[%Climm,,TTYi
T1 ? T2]
.Lose %LsSys
Syscal OPEN,[%Clbit,,.uao\%TJDIS
%Climm,,TTYo
[Sixbit /TTY/]]
.Lose %LsFil
JCLp: .Break 12,[..rJCL,,JCLbuf]
Skipn JCLbuf
Jrst Intro
Move JCL,[440700,,JCLbuf]
sChaff: Ildb A,JCL
Caie A,40
Cain A,^I
Jrst sChaff
DBP JCL
Move T1,[Ildb A,JCL]
Movem T1,Inhale
Setom OTOp
Call gFile
Jrst doIt
;;;
;;; You get here for interactive mode
;;;
Intro: Type ,"
Welcome to DDTDOC. At the prompt enter any DDT command (either colon
or control/escape type) and it will be described more fully than you
had ever dreamed possible. Use only vanilla forms, i.e. ^A and not
0^A, $$U and not $$1U, $O and not $$O, etc. Type Q to quit.
<EFBFBD>"
Call gFile
Prompt: Syscal FINISH,[%Climm,,TTYo]
.Lose %LsSys
.Reset TTYi,
Type ,"A[Command?] "
Setom Allowp
doIt: Move B,[440700,,String]
Setzm String
Setzm String+1
Movei C,6
Setzb Col,Alt
Setzm Echop
GetCC: XCT Inhale ;Into ac A
Andi A,177 ;Snuff fancy bits
Caie A,^M
Cain A,^C
Jrst [Jumpn Alt,Save
Jumpe Col,Save
Caie C,6
Jrst Search
Movei A,":
Setz Col,
Jrst Save]
Caie A,177
Jrst notRub
Jumpn Alt,[.Iot TTYo,[^P]
.Iot TTYo,["X]
Soja Alt,GetCC]
Jumpe Col,[Type ," RUBOUT does what you'd expect it to do!"
Jrst Error]
.Iot TTYo,[^P]
.Iot TTYo,["X]
Dpb Z,B
DBP B
Caie C,6
Aoja C,GetCC
Setz Col,
Jrst GetCC
notRUB: Caie A,^[ ;Escape
Jrst NonEsc
Jumpn Col,[Type ," Colon commands do not have escapes!"
Jrst Error]
Cail Alt,2
Jrst [Type ," DDT commands have a maximum of two escapes!"
Jrst Error]
Movei T1,"$
Idpb T1,B
Aoja Alt,GetCC
NonEsc: Caie A,":
Jrst nonCol
Jumpn Alt,[Idpb A,B
Jrst Search]
Jumpn Col,[Type ," Only one colon in :-commands!"
Jrst Error]
Aoja Col,GetCC
nonCol: Cail A,"a
Trz A,40
Jumpn Col,[Cain A,40
Jrst [Caie C,6
Jrst Search
Setz Col,
Movei A,":
Jrst Save]
Jumpe C,GetCC
Caige A,"!
Jrst [Type ," No control chars allowed in :-commands!"
Jrst Error]
Idpb A,B
Soja C,GetCC]
Jumpn Alt,Save
Cain A,"Q
Jrst Die
Save: Caige A,40
Jrst [Movei T1,"^
Idpb T1,B
Tro A,100
Jrst .+1]
Idpb A,B
Search: Skipn String
Jrst Error
.Iot TTYo,[^P]
.Iot TTYo,["A]
Jumpn Col,fColon
Move T1,[440700,,String]
TStrin: Ildb T2,T1
Jumpe T2,InitBP
.Iot TTYo,T2
Jrst TStrin
InitBP: Move C,CtrlBP
Move B,[440700,,D]
Setzb D,T2
Match: Ildb A,C
Caie A,^I
Cain A,^M
Jrst Compar
Cain A,40
Jrst [Cain T2,"$
Jrst tag
Jrst Compar]
Cain A,":
Jrst [Skipe T2
Cain T2,"$
Jrst tag
Jrst Compar]
tag: Idpb A,B
Move T2,A
Jrst Match
Compar: Camn D,String
Jrst Indeed
Nope: Call Sline ;No match... skip ahead to next
Ildb A,C
Caie A,^I
Cain A,"<
Jrst Nope
Caie A,"0
Cain A,40
Jrst Nope
Cain A,^M
Jrst Nope
Cain A,^L
Jrst [Type ," - Not found"
Jrst Error]
Move B,[440700,,D]
Setz D,
Move T2,A
Idpb A,B
Jrst Match
Indeed: Setom Echop ;Indeedy! We have a match....
Tell: .Iot TTYo,A
Skipln: Call Sline
gchar: Ildb A,C
Caie A,^I
Cain A,^M
Jrst Tell
Caie A,"0
Cain A,"<
Jrst AskMor
Caie A,40
Jrst GoOnp
AskMor: Type ,"--("
Caie A,40
atchar: .Iot TTYo,A
Ildb A,C
Caie A,^I
Cain A,^M
Skipa
Jrst atchar
Type ,")?--"
.Iot TTYi,T1
Caie T1,40
Jrst [Type ," Flushed<65>"
Jrst GoOnp]
.Iot TTYo,[^M]
Caie A,^M
Jrst Tell
Jrst Skipln
Sline: Ildb T1,C
Cain T1,^J
Return
Skipe Echop
.Iot TTYo,T1
Jrst Sline
;;;
;;;;;
;;;
fColon: Move Help,ColBP ;Initial BP
Ibp Help
Movei T1,6
Sub T1,C
Movem T1,CLen
cStrin: Move A,[440700,,String]
Movem Help,hTemp
Move T3,CLen
cW1: Ildb T1,Help
Ildb T2,A
Camle T1,T2
Jrst DirChk
Came T1,T2
Jrst Lose
Sojn T3,cW1
Jrst Win
Lose: Ildb T1,Help
Caie T1,^J
Jrst Lose
Ildb T1,Help
Cain T1,^L
Jrst DirChk
Cain T1,^M
Jrst [Ildb T1,Help
Ildb T1,Help
Cain T1,":
Jrst cStrin
.Value [Ascii /: File disordered - Can't parse KILL /]]
Jrst Lose
Win: Setom Echop
.Iot TTYo,[":]
Win2: Ildb T1,hTemp
Cain T1,^J
Jrst [Ildb T1,hTemp
Caie T1,^M
Cain T1,^L
Jrst GoOnp
Jrst .+1]
.Iot TTYo,T1
Jrst Win2
DirChk: Move T1,[440600,,B]
Setz B,
Move T2,[440700,,String]
Ildb A,T2
Jumpe A,SDir1
Subi A,40
Idpb A,T1
Jrst .-4
SDir1: Movsi A,-NDirs
SDir2: Move D,HSName(A)
Syscal OPEN,[%Clbit,,.uii
%Climm,,TEMPi
[Sixbit /DSK/]
[Sixbit /TS/]
B ? D]
Jrst [Aobjn A,SDir2
Jrst NFound]
.Close TEMPi,
.Iot TTYo,[":]
Move T1,B
Call 6Type
Type ," is a program residing in "
Move T1,D
Call 6Type
Type ,";
I don't know WHAT it does."
Jrst GoOnp
NFound: Type ,"No such command as :"
Move A,[440700,,String]
Ildb T1,A
Skipn T1
Jrst Error
.Iot TTYo,T1
Jrst .-4
GoOnp:
Error: Skipn OTOp
Jrst Prompt
Die: .Logout 1,
;;;
;;; TTY interrupt - Flush output on a ^S
;;;
Flush: Movei T3,TTYi
.ITYIC T3,
.Lose
Skipe Echop
Caie T3,^S
Jrst Dismis
.Reset TTYo,
Type ,"Flushed<65>"
.Reset TTYi,
Skipe OTOp
Jrst Die
Jrst ReProm
ReAsk: Skipn Allowp
Jrst Dismis
ReProm: Syscal DISMIS,[P ? %Climm,,Prompt]
.Lose
Dismis: Syscal DISMIS,[P]
.Lose
;;; Suboroutines
gFile: Syscal OPEN,[%Clbit,,.uai
%Climm,,DSKi
[Sixbit /DSK/]
[Sixbit /DDTORD/]
[Sixbit />/]
[Sixbit /.INFO./]]
.Value [Ascii /: Can't find DDTORD? KILL /]
.Access DSKi,[Bottom*5*2000]
Syscal CORBLK,[%Climm,,%Cbprv
%Climm,,%JSelf
[-Length,,hPage]
%Climm,,DSKi]
.Value [Ascii /: Can't map in file? KILL /]
Move A,[440700,,hLoc]
F0: Ildb T1,A
Caie T1,"^
Jrst F0
DBP A
Movem A,CtrlBP
Move A,[440700,,13.*2000]
F1: Move T2,T1
Ildb T1,A
Caie T1,"6
Jrst F1
Caie T2,":
Jrst F1
DBP A
DBP A
Movem A,ColBP
Return
6Type: Setz T2,
Rotc T1,6
Addi T2,40
.Iot TTYo,T2
Jumpn T1,6Type
Return
;;;
;;;;;
;;;
Variables
Constants
HPage==._-12+1
HLoc=HPage*2000
END Begin