--- /dev/null
+/
+/ VERSION 5A 4-26-77 MH
+/
+/THE FOLLOWING IS A SET OF 8 MODE (RALF TYPE)
+/ROUTINES THAT ENABLE PDP 12(8) HARDWARE OPTIONS
+/THESE ROUTINES ARE CALLABLE AT THE FORTRAN LEVEL
+/THE FOLLOWING OPTIONS ARE SUPPORTED:
+/
+/ 1 READ A BIT IN THE RIGHT SWITCHES
+/ 2 READ A BIT IN THE LEFT SWITCHES
+/ 3 READ A SENSE SWITCH
+/ 4 READ AN EXTERNAL LEVEL
+/ 5 OPEN OR CLOSE A RELAY
+/
+/IF THE REQUESTED BIT OR SWITCH IS SET THE
+/SUBROUTINE RETURNS WITH THE CALLERS ARG SET TO
+/A 1,OTHERWISE IT IS SET TO A 0
+/
+/
+\f SECT8 RSW
+ INDEX P17
+ BASE 0
+ JSA SETUP /CHECK ONE RSW BIT
+ TRAP4 DORITE /CALL 8 MODE ROUT USER
+ /ARG IS IN FPP XR3
+CONT, STARTD /ANSWER IS IN XR3
+ FLDA% 0,XR2 /GET PTR TO CALLER ANS
+ FSTA 3
+ STARTF
+ XTA XR3
+ FSTA% 3 /GIVE ANS TO CALLER
+GOBAK, FLDA 30 /RTN TO CALLER
+ JAC
+ ENTRY LSW
+LSW, JSA SETUP /READ 1 LSW BIT
+ TRAP4 DOLEFT /CALL 8MODE ROUT
+ JA CONT
+ ENTRY SSW
+SSW, STARTD /READ A SENSE SWITCH
+ FLDA ANSNSI
+ JA ESSW
+ ENTRY ROPEN
+ROPEN, STARTD /OPEN A RELAY
+ FLDA ABCLI
+ERCLOS, FSTA MASK /PLANT A BCLI OR BSEI IN
+ /8 MODE ROUTINE
+ JSA SETUP
+ TRAP4 RELAY
+ FLDA 30
+ JAC
+ ENTRY EXTLVL
+EXTLVL, STARTD /READ AN EXTERNAL LEVEL
+ FLDA ANSXL
+ESSW, FSTA LSKP /PLANT SXLI OR SNS IN
+ JSA SETUP /8 MODE ROUTINE
+ TRAP4 DOSXL
+ JA CONT
+ ENTRY RCLOSE
+RCLOSE, STARTD /CLOSE A RELAY
+ FLDA ABSEI
+ JA ERCLOS
+SETUP, 0;0 /GET ARGS AND SETUP RTN
+ STARTD
+ SETX P17
+ FLDA% 0,XR1 /GET PTR TO 1ST USER ARG
+ FSTA 3
+ STARTF
+ FLDA% 3 /USER ARG TO FAC
+ ATX XR3 /PUT IN XR FOR 8 MODE
+ JA SETUP
+\fDORITE, 0 /READ RIGHT SWITCHES
+ LAS
+ DCA MASK
+ JMS SETBIT /GET REQUESTED BIT
+ AND MASK /MASK RSW
+ SZA CLA /IF BIT IS SET,SET XR3=1
+ ISZ XR3
+ CIF CDF /RTN TO RTS
+ JMP% DORITE
+DOLEFT, 0 /READ LEFT SWITCHES
+ TAD DOLEFT
+ DCA DORITE
+ IOF
+ 6141 /LINC
+ 517 /LSW
+ 2 /PDP
+ ION
+ JMP DORITE+2
+DOSXL, 0 /READ SENSE SWITCH
+ /OR EXTERNAL LEVEL
+ TAD XR3 /=SSW OR LVL TO DO
+ AND P17
+ TAD LSKP
+ DCA LSKP
+ CLL CML /SET LNK=COND MET
+ IOF
+ 6141
+LSKP, 0 /=SNS I N OR SXL N
+ 261 /IF SKP FAILS THEN COND
+ /IS MET SO ROTATE LNK
+ /INTO AC(11) (261=ROL I 1)
+ 2 /PDP
+ ION
+ DCA XR3 /SAVE ANSWER
+ CIF CDF
+ JMP% DOSXL /RTN TO RTS
+RELAY, 0 /OPEN A RELAY
+ TAD CONT /=6
+ JMS SETBIT /GO SET RELAY BIT
+ DCA MASK+1
+ IOF
+ 6141
+ 15 /GET RELAYS
+MASK, 0 /BCL I OR BSE I
+ 0 /SET OR CLR 1 RELAY BIT
+ 14 /ATR PUT RELAYS BACK
+ 2
+ ION
+ CLA
+ CIF CDF
+ JMP% RELAY
+SETBIT, 0 /COME HERE TO POSITION
+ TAD XR3 /BIT IN AC ACCORDING TO
+ /C(AC)+XR3
+ CMA CLL CML /ROTATE BIT INTO POSITION
+ DCA XR3 /XR3 MUST=0 UPON EXIT
+ RAR /ROTATE LINK UNTIL
+ ISZ XR3 /XR3=0
+ JMP .-2
+ JMP% SETBIT /RTN WITH AC SET
+ABCLI, 1560 /BCL I
+ABSEI, 1620 /BSE I
+P17, 17 /FPP XR0
+XR1, 1
+XR2, 2
+XR3, 0
+ANSXL, 400 /SXL
+ 261 /ROL I 1
+ANSNSI, 460 /SNS I
+ 261
+\f