1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-28 04:57:43 +00:00

Build DDTDOC.

This commit is contained in:
Lars Brinkhoff
2016-11-26 22:27:50 +01:00
committed by Eric Swenson
parent 7ed0d1d8ce
commit ad492867c2
5 changed files with 511 additions and 1 deletions

480
src/syseng/ddtdoc.71 Executable file
View File

@@ -0,0 +1,480 @@
;-*-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 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.
î"
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î"
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î"
.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