mirror of
https://github.com/PDP-10/its.git
synced 2026-02-06 00:24:41 +00:00
Added build of LIBLSP; VSAID FASL and LIBLSP; TTYVAR FASL.
Resolves #756 and #758.
This commit is contained in:
330
src/gsb/ttyvar.17
Normal file
330
src/gsb/ttyvar.17
Normal file
@@ -0,0 +1,330 @@
|
||||
;;; MONDAY JAN 02,1978 07:38:17
|
||||
.FASL
|
||||
|
||||
IF1,.INSRT .FASL DEFS
|
||||
|
||||
IFNDEF LA34,LA34==60
|
||||
|
||||
SUBTTL <TTY> specification
|
||||
;;; A <TTY> spec may be a file object (in which case the channel number
|
||||
;;; is passed to TTYVAR), or a small fixnum which represents that tty
|
||||
;;; number.
|
||||
|
||||
TTYDC0: UNLOCKI
|
||||
CAME A,.SPECIAL TYO
|
||||
CAMN A,.SPECIAL TYI
|
||||
.VALUE
|
||||
WTA [BAD TTY SPECIFICATION!]
|
||||
TTYDEC: ;; Takes <TTY> in A, returns spec in R.
|
||||
;; DOES A LOCKI!
|
||||
CAIN A,.ATOM T
|
||||
HRRZ A,.SPECIAL TYO
|
||||
LOCKI
|
||||
MOVEI R,(A)
|
||||
LSH R,-9.
|
||||
HRRZ R,ST(R)
|
||||
CAIN R,.ATOM FIXNUM
|
||||
JRST [MOVE R,(A)
|
||||
SKIPL R
|
||||
CAILE R,259.
|
||||
JRST TTYDC0
|
||||
IORI R,400000
|
||||
POPJ P,]
|
||||
CAIE R,.ATOM ARRAY
|
||||
JRST TTYDC0
|
||||
MOVE R,ASAR(A)
|
||||
TLNN R,AS.FIL
|
||||
JRST TTYDC0
|
||||
MOVE R,TTSAR(A)
|
||||
TLNE R,TTS.CL
|
||||
JRST TTYDC0
|
||||
MOVE R,F.CHAN(R)
|
||||
SKIPL R
|
||||
CAILE R,20
|
||||
.VALUE
|
||||
POPJ P,
|
||||
|
||||
SUBTTL <TTYVAR> specification
|
||||
;;; A <TTYVAR> may be a fixnum or a symbol which will be converted to
|
||||
;;; sixbit. A check is made so that the sixbit will not be taken as
|
||||
;;; an aobjn pointer.
|
||||
|
||||
VARDC0: WTA [UNRECOGNIZABLE TTYVAR SPECIFICATION!]
|
||||
VARDEC: ;; May clobber everything since it may call SIXMAK.
|
||||
;; Returns spec in TT.
|
||||
MOVEI B,(A)
|
||||
LSH B,-9.
|
||||
HRRZ B,ST(B)
|
||||
CAIN B,.ATOM FIXNUM
|
||||
JRST [MOVE TT,(A) ? JRST VARDC1]
|
||||
CAIE B,.ATOM SYMBOL
|
||||
JRST VARDC0
|
||||
PUSH P,A
|
||||
PUSHJ P,SIXMAK
|
||||
POP P,A
|
||||
VARDC1: TLC TT,777000
|
||||
TLCN TT,777000
|
||||
JRST VARDC0
|
||||
POPJ P,
|
||||
|
||||
TTYVAR: SETZ
|
||||
SIXBIT \TTYVAR\
|
||||
MOVE R
|
||||
MOVE -1(FXP)
|
||||
MOVEM TT
|
||||
SETZB F
|
||||
|
||||
.ENTRY READ-TTY-VARIABLE SUBR 003
|
||||
;; <TTY>, <TTYVAR>. NCALLable.
|
||||
PUSH P,[FIX1]
|
||||
RDTTV0: PUSH P,A
|
||||
MOVEI A,(B)
|
||||
PUSHJ P,VARDEC
|
||||
PUSH FXP,TT
|
||||
EXCH A,(P)
|
||||
PUSHJ P,TTYDEC
|
||||
.CALL TTYVAR
|
||||
JRST RDTTV1
|
||||
PUSHJ P,INTREL
|
||||
SUB FXP,[1,,1]
|
||||
SUB P,[1,,1]
|
||||
POPJ P,
|
||||
|
||||
RDTTV1: CAIE F,11 ;; "illegal file name"
|
||||
JRST RDTTV2
|
||||
PUSHJ P,INTREL
|
||||
EXCH A,(P)
|
||||
WTA [ILLEGAL TTYVAR SPECIFICATION!]
|
||||
SUB FXP,[1,,1]
|
||||
MOVEI B,(A)
|
||||
POP P,A
|
||||
JRST RDTTV0
|
||||
|
||||
RDTTV2: CAIA
|
||||
.CALL TTYVAR
|
||||
IOJRST 1,.+1
|
||||
EXCH A,(P)
|
||||
JSP T,PDLNMK
|
||||
CALL 1,.FUNCTION NCONS
|
||||
MOVEI B,(A)
|
||||
POP P,A
|
||||
JSP T,PDLNMK
|
||||
CALL 2,.FUNCTION CONS
|
||||
MOVEI B,.ATOM READ-TTY-VARIABLE
|
||||
CALL 2,.FUNCTION XCONS
|
||||
%IOL (C)
|
||||
JSP T,FXNV1
|
||||
SUB FXP,[1,,1]
|
||||
POPJ P,
|
||||
|
||||
.ENTRY READ-TTY-VARIABLE? SUBR 004
|
||||
;; <TTY>, <TTYVAR>, Function. NIL on success; otherwise, if
|
||||
;; function null, returns 0; else calls function with
|
||||
;; args of the <TTY>, <TTYVAR>, and error code.
|
||||
PUSH P,[FIX1]
|
||||
PUSH P,C
|
||||
PUSH P,A
|
||||
MOVEI B,(A)
|
||||
PUSHJ P,VARDEC
|
||||
PUSH FXP,TT
|
||||
EXCH A,(P)
|
||||
PUSHJ P,TTYDEC
|
||||
.CALL TTYVAR
|
||||
JRST RDTTV4
|
||||
PUSHJ P,INTREL
|
||||
RDTTV3: SUB FXP,[1,,1]
|
||||
SUB P,[1,,1]
|
||||
POPJ P,
|
||||
|
||||
RDTTV4: PUSHJ P,INTREL
|
||||
POP P,AR2A
|
||||
JUMPE AR2A,[SETZ TT, ? JRST RDTTV2]
|
||||
POP P,B
|
||||
MOVEM F,(FXP)
|
||||
MOVEI C,(FXP)
|
||||
CALLF 3,(AR2A)
|
||||
JSP T,FXNV1
|
||||
SUB FXP,[1,,1]
|
||||
POPJ P,
|
||||
|
||||
MDTTV0: ;; Modify a tty variable.
|
||||
;; Instruction on fxp, <tty> in a, <ttyvar> in b, arg in c.
|
||||
;; Skips on success; leaves <tty> in a, <ttyvar> in b, arg in
|
||||
;; tt, error code (if any) in F. Leaves locki word on fxp.
|
||||
JSP T,FXNV3
|
||||
PUSH FXP,[0]
|
||||
PUSH FXP,R
|
||||
PUSH P,A
|
||||
MOVEI A,(B)
|
||||
PUSHJ P,VARDEC
|
||||
EXCH A,(P)
|
||||
PUSHJ P,TTYDEC
|
||||
POP FXP,-2(FXP)
|
||||
HLLZ T,-2(FXP)
|
||||
HRRI T,(FXP)
|
||||
POP P,B
|
||||
AOS (P)
|
||||
;; <TTY> in a, <TTYVAR> in b, <#tty> in r, <#ttyvar> in tt,
|
||||
;; locki word at -1(fxp), arg at (fxp), opcode at -2(fxp),
|
||||
;; full instruction in T.
|
||||
.CALL [SETZ ? SIXBIT \TTYVAR\
|
||||
MOVE R ? MOVE TT ? MOVEI 0 ? MOVE T ? SETZB F]
|
||||
SOS (P)
|
||||
POP FXP,TT
|
||||
POPJ P,
|
||||
|
||||
MDTTV1: ;; Same as MDTTV0, but gives WTA on illegal ttyvar spec.
|
||||
PUSHJ P,MDTTV0
|
||||
CAIA
|
||||
JRST [AOS (P) ? POPJ P,]
|
||||
CAIE F,11
|
||||
POPJ P,
|
||||
PUSHJ P,INTREL
|
||||
PUSH P,A
|
||||
MOVEI A,(B)
|
||||
WTA [ILLEGAL TTYVAR SPECIFICATION!]
|
||||
MOVEI B,(A)
|
||||
JSP T,FXCONS
|
||||
MOVEI C,(A)
|
||||
POP P,A
|
||||
JRST MDTTV1
|
||||
|
||||
MDTTV2: ;; Function entry; wants instruction on fxp, function name on p,
|
||||
;; <tty> in a, <ttyvar> in b, arg in c. Gives WTA for bad
|
||||
;; ttyvar, else io-lossage error.
|
||||
PUSHJ P,MDTTV1
|
||||
JRST MDTTV3
|
||||
PUSHJ P,INTREL
|
||||
SUB P,[1,,1]
|
||||
SUB FXP,[1,,1]
|
||||
MOVEI A,.ATOM T
|
||||
POPJ P,
|
||||
|
||||
MDTTV3: CAIA
|
||||
.CALL TTYVAR
|
||||
IOJRST 1,.+1
|
||||
PUSHJ P,INTREL
|
||||
PUSH P,A
|
||||
PUSH P,B
|
||||
JSP T,FXCONS
|
||||
CALL 1,.FUNCTION NCONS
|
||||
MOVEI B,(A)
|
||||
POP P,A
|
||||
JSP T,PDLNMK
|
||||
CALL 2,.FUNCTION CONS
|
||||
MOVEI B,(A)
|
||||
POP P,A
|
||||
JSP T,PDLNMK
|
||||
CALL 2,.FUNCTION CONS
|
||||
POP P,B
|
||||
CALL 2,.FUNCTION XCONS
|
||||
SUB FXP,[1,,1]
|
||||
%IOL (C)
|
||||
JSP T,FXNV1
|
||||
POPJ P,
|
||||
|
||||
MDTTV4: ;; 'Nother function entry. Expects opcode on fxp, <tty> in a,
|
||||
;; <ttyvar> in b, arg in c, and error-handling function in ar1.
|
||||
;; Returns NIL on success. If error-handling function in NIL,
|
||||
;; returns error code, else result of calling function with args
|
||||
;; of <TTY>, <TTYVAR>, arg, and error code.
|
||||
PUSH P,AR1
|
||||
PUSHJ P,MDTTV0
|
||||
JRST MDTTV5
|
||||
SETZ A,
|
||||
PUSHJ P,INTREL
|
||||
SUB FXP,[1,,1]
|
||||
SUB P,[1,,1]
|
||||
POPJ P,
|
||||
|
||||
MDTTV5: PUSHJ P,INTREL
|
||||
POP P,AR2A
|
||||
JUMPE AR2A,[MOVE TT,F ? SUB FXP,[1,,1] ? JRST FIX1]
|
||||
MOVEM TT,(FXP)
|
||||
MOVEI C,(FXP)
|
||||
PUSH FXP,F
|
||||
MOVEI AR1,(FXP)
|
||||
CALLF 4,(AR2A)
|
||||
SUB FXP,[2,,2]
|
||||
POPJ P,
|
||||
|
||||
.ENTRY WRITE-TTY-VARIABLE SUBR 004
|
||||
;; <TTY>, <TTYVAR>, new value
|
||||
PUSH FXP,[MOVE]
|
||||
PUSH P,[.ATOM WRITE-TTY-VARIABLE ]
|
||||
JRST MDTTV2
|
||||
|
||||
.ENTRY OR-INTO-TTY-VARIABLE SUBR 004
|
||||
PUSH FXP,[IOR]
|
||||
PUSH P,[.ATOM OR-INTO-TTY-VARIABLE ]
|
||||
JRST MDTTV2
|
||||
|
||||
.ENTRY CLEAR-TTY-VARIABLE-BITS SUBR 004
|
||||
PUSH FXP,[TDZ]
|
||||
PUSH P,[.ATOM CLEAR-TTY-VARIABLE-BITS ]
|
||||
JRST MDTTV2
|
||||
|
||||
.ENTRY *INCREMENT-TTY-VARIABLE SUBR 004
|
||||
PUSH FXP,[ADD]
|
||||
PUSH P,[.ATOM *INCREMENT-TTY-VARIABLE ]
|
||||
JRST MDTTV2
|
||||
|
||||
.ENTRY INCREMENT-TTY-VARIABLE LSUBR 003004
|
||||
JSP TT,LWNACK
|
||||
LA23,,.ATOM INCREMENT-TTY-VARIABLE
|
||||
CAMN T,[-2]
|
||||
SKIPA C,[.ATOM #1 ]
|
||||
POP P,C
|
||||
POP P,B
|
||||
MOVEI A,.ATOM INCREMENT-TTY-VARIABLE
|
||||
EXCH A,(P)
|
||||
PUSH FXP,[ADD]
|
||||
JRST MDTTV2
|
||||
|
||||
.ENTRY DECREMENT-TTY-VARIABLE LSUBR 003004
|
||||
JSP TT,LWNACK
|
||||
LA23,,.ATOM DECREMENT-TTY-VARIABLE
|
||||
CAMN T,[-2]
|
||||
SKIPA C,[.ATOM #1 ]
|
||||
POP P,C
|
||||
POP P,B
|
||||
MOVEI A,.ATOM DECREMENT-TTY-VARIABLE
|
||||
PUSH FXP,[SUB]
|
||||
JRST MDTTV2
|
||||
|
||||
.ENTRY WRITE-TTY-VARIABLE? SUBR 005
|
||||
PUSH FXP,[MOVE]
|
||||
JRST MDTTV4
|
||||
|
||||
.ENTRY OR-INTO-TTY-VARIABLE? SUBR 005
|
||||
PUSH FXP,[IOR]
|
||||
JRST MDTTV4
|
||||
|
||||
.ENTRY CLEAR-TTY-VARIABLE-BITS? SUBR 005
|
||||
PUSH FXP,[TDZ]
|
||||
JRST MDTTV4
|
||||
|
||||
MUMBLE: CAMN T,[-3]
|
||||
JRST [PUSH P,(P) ? MOVEI A,.ATOM #1 ? MOVEM A,-1(P) ? JRST .+1]
|
||||
POP P,AR1
|
||||
POP P,C
|
||||
POP P,B
|
||||
POP P,A
|
||||
POPJ FXP,
|
||||
|
||||
.ENTRY INCREMENT-TTY-VARIABLE? LSUBR 004005
|
||||
JSP TT,LWNACK
|
||||
LA34,,.ATOM INCREMENT-TTY-VARIABLE?
|
||||
PUSHJ FXP,MUMBLE
|
||||
PUSH FXP,[ADD]
|
||||
JRST MDTTV4
|
||||
|
||||
.ENTRY DECREMENT-TTY-VARIABLE? LSUBR 004005
|
||||
JSP TT,LWNACK
|
||||
LA34,,.ATOM DECREMENT-TTY-VARIABLE?
|
||||
PUSHJ FXP,MUMBLE
|
||||
PUSH FXP,[SUB]
|
||||
JRST MDTTV4
|
||||
|
||||
FASEND
|
||||
|
||||
Reference in New Issue
Block a user