1
0
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:
Eric Swenson
2018-03-28 22:44:02 -07:00
parent bbc2beba8f
commit 880744beca
3 changed files with 342 additions and 1 deletions

330
src/gsb/ttyvar.17 Normal file
View 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