mirror of
https://github.com/PDP-10/its.git
synced 2026-02-04 15:53:01 +00:00
694 lines
12 KiB
Plaintext
694 lines
12 KiB
Plaintext
;
|
||
; C10SYS - C LIBRARY ROUTINES (INTERFACES TO SYSTEM CALLS)
|
||
;
|
||
; This file is ITS dependent.
|
||
;
|
||
|
||
TITLE C10SYS
|
||
.INSRT NC
|
||
.INSRT NM
|
||
|
||
; CONTAINS:
|
||
|
||
; SYSOPEN ; OPEN CHANNEL
|
||
; CLOSE ; CLOSE CHANNEL
|
||
; CHNLOC ; FIND AVAILABLE CHANNEL
|
||
|
||
; UIIOT ; PERFORM UNIT INPUT IOT
|
||
; UOIOT ; PERFORM UNIT OUTPUT IOT
|
||
; SYSREAD ; PERFORM BLOCK INPUT IOT
|
||
; SYSWRITE ; PERFORM BLOCK OUTPUT IOT
|
||
; SIOT ; STRING IOT
|
||
|
||
; SYSFINISH ; FORCE OUTPUT AND WAIT FOR COMPLETION
|
||
; SYSFORCE ; FORCE OUTPUT TO DEVICE
|
||
|
||
; RESET ; RESET CHANNEL
|
||
; STATUS ; GET CHANNEL STATUS
|
||
; RFPNTR ; READ FILE ACCESS POINTER
|
||
; ACCESS ; PERFORM RANDOM ACCESS ON CHANNEL
|
||
; FILLEN ; GET FILE LENGTH
|
||
; FILNAM ; GET FILE NAME FROM CHANNEL
|
||
|
||
; RAUTH ; READ FILE AUTHOR
|
||
; SAUTH ; SET FILE AUTHOR
|
||
; RDMPBT ; READ DUMP BIT
|
||
; SDMPBT ; SET DUMP BIT
|
||
; SREAPB ; SET DO-NOT-REAP BIT
|
||
; RFDATE ; READ FILE CREATION DATE
|
||
; SFDATE ; SET FILE CREATION DATE
|
||
; SRDATE ; SET FILE REFERENCE DATE
|
||
; DSKUPD ; UPDATE FILE INFO
|
||
; RESRDT ; RESTORE FILE INFO
|
||
|
||
; TTYGET ; GET TTY STATUS
|
||
; TTYSET ; SET TTY STATUS
|
||
; CNSGET ; GET CONSOLE PARAMETERS
|
||
; CNSSET ; SET CONSOLE PARAMETERS
|
||
|
||
; ITYIC ; READ TTY INTERRUPT CHARACTER
|
||
; WHYINT ; WHY WAS I INTERRUPTED?
|
||
; SYSLISTEN ; LISTEN FOR TTY INPUT
|
||
; RCPOS ; READ CURSOR POSITION
|
||
; SCML ; SET # OF COMMAND LINES
|
||
|
||
; GETCPU ; RETURN CPU TIME IN 4.069 USEC
|
||
; CPUTM ; RETURN CPU TIME IN 1/60 SECONDS
|
||
; SLEEP ; GO TO SLEEP
|
||
; ETIME ; RETURN A TIME FOR ELAPSED TIME MEASUREMENT
|
||
; NOW ; GET CURRENT DATE AND TIME
|
||
|
||
; CORBLK ; PERFORM PAGE HACKING
|
||
; CORTYP ; GET INFORMATION ABOUT PAGE
|
||
; PAGEID ; GET NAMED PUBLIC PAGE
|
||
; PGWRIT ; CAUSE PAGE TO BE WRITTEN ON DISK
|
||
|
||
; RSNAME ; READ SNAME
|
||
; SSNAME ; SET SNAME
|
||
; RUNAME ; READ USER NAME
|
||
; RSUSET ; WHAT = RSUSET (WHERE)
|
||
; WSUSET ; WHAT = WSUSET (WHERE, WHAT)
|
||
; RUSET ; WHAT = RUSET (WHO, WHERE)
|
||
; WUSET ; WHAT = WUSET (WHO, WHERE, WHAT)
|
||
; WUSRVAR ; RC = WUSRVAR (JOB, SPEC, VALUE)
|
||
|
||
; DELETE ; DELETE A FILE
|
||
; SYSDEL ; DELETE FILE
|
||
; RENMWO ; RENAME FILE OPEN FOR OUTPUT
|
||
; SYSRNM ; EC = SYSRNM (FS1, FS2)
|
||
; SYSLNK ; EC = MAKE LINK (FS1, FS2)
|
||
; DIRSIZ ; READ DIRECTORY SIZE, QUOTA INFO
|
||
|
||
; TRANAD ; RC = TRANAD (JOB, FROM, TO, FLAGS)
|
||
; TRANCL ; RC = TRANCL (JOB, FLAGS)
|
||
; TRANDL ; RC = TRANDL (JOB, FILESPEC, FLAGS)
|
||
|
||
; SYSLOAD ; LOAD A PROGRAM
|
||
; PDUMP ; PDUMP A PROGRAM
|
||
; UCLOSE ; DESTROY INFERIOR JOB
|
||
; SYSDISOWN ; EC = SYSDISOWN (JOBCH)
|
||
; REOWN ; EC = REOWN (JOBCH)
|
||
; SYSDTACH ; EC = SYSDTACH (JOBCH)
|
||
; SYSATACH ; EC = SYSATACH (JOBCH, TTY)
|
||
|
||
; ATTY ; GIVE TTY TO INFERIOR
|
||
; DTTY ; TAKE TTY FROM INFERIOR
|
||
|
||
; WFNZ ; WAIT FOR WORD TO BECOME NON-ZERO
|
||
; WFZ ; WAIT FOR WORD TO BECOME ZERO
|
||
; VAL7RET ; VALRET AN ASCIZ STRING
|
||
; DEMSIG ; SIGNAL A DEMON PROCESS
|
||
; SSTATUS ; OBTAIN SYSTEM STATUS
|
||
|
||
; MAKTAG ; CREATE A TAG (GLOBAL LABEL)
|
||
; GOTAG ; GOTO A TAG, DISMISSING INTERRUPTS
|
||
|
||
CENTRY SYSOPEN,[CHAN, FILSPC, MODE] ; OPEN CHANNEL
|
||
|
||
HRLZ B,MODE
|
||
HRR B,CHAN
|
||
HRRZ C,FILSPC
|
||
SYSCAL OPEN,[B ? (C) ? 1(C) ? 2(C) ? 3(C)]
|
||
RETURN
|
||
|
||
CENTRY CLOSE,[CHAN] ; CLOSE CHANNEL
|
||
|
||
SYSCAL CLOSE,[CHAN]
|
||
RETURN
|
||
|
||
CENTRY CHNLOC ; FIND AVAILABLE CHANNEL
|
||
|
||
FIRSTC==1 ; CHANGE TO 0 IF SYSTEM FIXED SO THAT
|
||
; CHANNEL 0 IS NOT ARBITRARILY SMASHED
|
||
; BY .CALL MLINK, ETC.
|
||
|
||
MOVEI B,FIRSTC
|
||
CL$1: SYSCAL RFNAME,[B ? 2000,,C]
|
||
JUMPE C,CL$2 ; CHANNEL NOT OPEN
|
||
ADDI B,1
|
||
CAIGE B,20
|
||
GO CL$1
|
||
SETO A,
|
||
GO CL$RET
|
||
CL$2: MOVE A,B
|
||
CL$RET: RETURN
|
||
|
||
CENTRY UIIOT,[CHAN] ; PERFORM UNIT INPUT IOT
|
||
|
||
MOVE A,CHAN
|
||
ANDI A,17
|
||
LSH A,23.
|
||
IOR A,[.IOT A]
|
||
XCT A
|
||
RETURN
|
||
|
||
CENTRY UOIOT,[CHAN,DATA] ; PERFORM UNIT OUTPUT IOT
|
||
|
||
MOVE A,CHAN
|
||
ANDI A,17
|
||
LSH A,23.
|
||
IOR A,[.IOT DATA]
|
||
XCT A
|
||
MOVE A,DATA
|
||
RETURN
|
||
|
||
CENTRY SYSREAD,[CHAN,BUFFP,NWORDS] ; PERFORM BLOCK INPUT IOT
|
||
XENTRY SYSWRITE,SYSREAD ; PERFORM BLOCK OUTPUT IOT
|
||
|
||
MOVN A,NWORDS ; MINUS NUMBER OF WORDS
|
||
HRLZ 0,A
|
||
HRR 0,BUFFP ; SET UP CPTR
|
||
MOVE C,CHAN
|
||
ANDI C,17
|
||
LSH C,23.
|
||
IOR C,[.IOT 0]
|
||
XCT C
|
||
HLRE C,0 ; NEW COUNTER
|
||
SUB C,A ; NUMBER OF WORDS WRITTEN/READ
|
||
MOVE A,C
|
||
RETURN
|
||
|
||
CENTRY SIOT,[CHAN,BYTP,NBYTES] ; STRING IOT
|
||
|
||
SYSCAL SIOT,[CHAN ? BYTP ? NBYTES],SI$LOS
|
||
MOVE A,NBYTES
|
||
SI$RET: RETURN
|
||
SI$LOS: CROAK SIOT LOST
|
||
GO SI$RET
|
||
|
||
CENTRY SYSFINISH,[CHAN]
|
||
|
||
SYSCAL FINISH,[CHAN]
|
||
RETURN
|
||
|
||
CENTRY SYSFORCE,[CHAN]
|
||
|
||
SYSCAL FORCE,[CHAN]
|
||
RETURN
|
||
|
||
CENTRY RESET,[CHAN] ; RESET CHANNEL
|
||
|
||
MOVE A,CHAN
|
||
ANDI A,17
|
||
LSH A,23.
|
||
IOR A,[.RESET]
|
||
XCT A
|
||
SETZ A,
|
||
RETURN
|
||
|
||
CENTRY STATUS,[CHAN] ; GET CHANNEL STATUS
|
||
|
||
MOVE A,CHAN
|
||
LSH A,23.
|
||
IOR A,[.STATUS A]
|
||
XCT A
|
||
RETURN
|
||
|
||
CENTRY RFPNTR,[CHAN] ; READ FILE ACCESS POINTER
|
||
|
||
SYSCAL RFPNTR,[CHAN ? MOVEM B],RP$LOS
|
||
MOVE A,B
|
||
RP$RET: RETURN
|
||
RP$LOS: MOVN A,A
|
||
GO RP$RET
|
||
|
||
CENTRY ACCESS,[CHAN,POS] ; PERFORM RANDOM ACCESS ON CHANNEL
|
||
|
||
SYSCAL ACCESS,[CHAN ? POS]
|
||
RETURN
|
||
|
||
CENTRY FILLEN,[CHAN] ; GET FILE LENGTH
|
||
|
||
SYSCAL FILLEN,[CHAN ? 2000,,B],FL$LOS
|
||
MOVE A,B
|
||
FL$RET: RETURN
|
||
FL$LOS: MOVN A,A
|
||
GO FL$RET
|
||
|
||
CENTRY FILNAM,[CHAN,FILSPC] ; GET FILE NAME FROM CHANNEL
|
||
|
||
HRLZ B,CHAN ; CHANNEL
|
||
HRR B,FILSPC ; FILESPEC FOR RESULTS
|
||
MOVE C,4(B) ; SAVE 5TH WORD
|
||
.RCHST B, ; READ CHANNEL STATUS
|
||
HRLZS (B) ; LEFT ADJUST DEV
|
||
MOVEM C,4(B) ; RESTORE 5TH WORD
|
||
RETURN ; DONE
|
||
|
||
CENTRY RAUTH,[CHAN]
|
||
|
||
SYSCAL RAUTH,[CHAN ? MOVEM B],RA$LOS
|
||
MOVE A,B
|
||
RA$RET: RETURN
|
||
RA$LOS: MOVN A,A
|
||
GO RA$RET
|
||
|
||
CENTRY SAUTH,[CHAN,AUTHOR]
|
||
|
||
SYSCAL SAUTH,[CHAN ? AUTHOR]
|
||
RETURN
|
||
|
||
CENTRY RDMPBT,[CHAN]
|
||
|
||
SYSCAL RDMPBT,[CHAN ? MOVEM B],RD$LOS
|
||
MOVE A,B
|
||
RD$RET: RETURN
|
||
RD$LOS: MOVN A,A
|
||
GO RD$RET
|
||
|
||
CENTRY SDMPBT,[CHAN,BIT]
|
||
|
||
SYSCAL SDMPBT,[CHAN ? BIT]
|
||
RETURN
|
||
|
||
CENTRY SREAPB,[CHAN,BIT]
|
||
|
||
SYSCAL SREAPB,[CHAN ? BIT]
|
||
RETURN
|
||
|
||
CENTRY RFDATE,[CHAN] ; READ FILE CREATION DATE
|
||
|
||
SYSCAL RFDATE,[CHAN ? 2000,,B],RF$LOS
|
||
MOVE A,B
|
||
RF$RET: RETURN
|
||
RF$LOS: MOVN A,A
|
||
GO RF$RET
|
||
|
||
CENTRY SFDATE,[CHAN,FDATE] ; SET FILE CREATION DATE
|
||
|
||
SYSCAL SFDATE,[CHAN ? FDATE]
|
||
RETURN
|
||
|
||
CENTRY SRDATE,[CHAN,FDATE] ; SET FILE REFERENCE DATE
|
||
|
||
SYSCAL SRDATE,[CHAN ? FDATE]
|
||
RETURN
|
||
|
||
CENTRY DSKUPD,[CHAN]
|
||
|
||
SYSCAL DSKUPD,[CHAN]
|
||
RETURN
|
||
|
||
CENTRY RESRDT,[CHAN]
|
||
|
||
SYSCAL RESRDT,[CHAN]
|
||
RETURN
|
||
|
||
CENTRY TTYGET,[CHAN,BLOCK] ; GET TTY STATUS - WRITES 3 VALUES
|
||
|
||
HRRZ B,BLOCK
|
||
SYSCAL TTYGET,[CHAN ? MOVEM (B) ? MOVEM 1(B) ? MOVEM 2(B)]
|
||
RETURN
|
||
|
||
CENTRY TTYSET,[CHAN,BLOCK] ; SET TTY STATUS - READS 3 VALUES
|
||
|
||
HRRZ B,BLOCK
|
||
SYSCAL TTYSET,[CHAN ? (B) ? 1(B) ? 2(B)]
|
||
RETURN
|
||
|
||
CENTRY CNSGET,[CHAN,BLOCK] ; GET CONSOLE STATUS - WRITES 5 VALUES
|
||
|
||
HRRZ B,BLOCK
|
||
SYSCAL CNSGET,[CHAN ? MOVEM (B) ? MOVEM 1(B) ? MOVEM 2(B)
|
||
MOVEM 3(B) ? MOVEM 4(B)]
|
||
RETURN
|
||
|
||
CENTRY CNSSET,[CHAN,BLOCK] ; SET CONSOLE STATUS - READS 5 VALUES
|
||
|
||
HRRZ B,BLOCK
|
||
SYSCAL CNSSET,[CHAN ? (B) ? 1(B) ? 2(B) ? 3(B) ? 4(B)]
|
||
RETURN
|
||
|
||
CENTRY WHYINT,[CHAN,BLOCK]
|
||
|
||
HRRZ B,BLOCK
|
||
SYSCAL WHYINT,[CHAN ? (B) ? 1(B) ? 2(B) ? 3(B) ? 4(B)]
|
||
RETURN
|
||
|
||
CENTRY ITYIC,[CHAN] ; READ TTY INTERRUPT CHARACTER
|
||
|
||
MOVE A,CHAN ; CHANNEL
|
||
.ITYIC A,
|
||
SETO A,
|
||
RETURN
|
||
|
||
CENTRY SYSLISTEN,[CHAN] ; NCHARS = SYSLISTEN(CHAN)
|
||
|
||
SYSCAL LISTEN,[CHAN ? MOVEM B],LI$LOS
|
||
MOVE A,B
|
||
LI$RET: RETURN
|
||
LI$LOS: MOVN A,A
|
||
GO LI$RET
|
||
|
||
CENTRY RCPOS,[CHAN] ; READ TTY CURSOR POSITION (V,,H)
|
||
|
||
SYSCAL RCPOS,[CHAN ? 2000,,B],RC$LOS
|
||
MOVE A,B
|
||
RC$RET: RETURN
|
||
RC$LOS: MOVN A,A
|
||
GO RC$RET
|
||
|
||
CENTRY SCML,[CHAN,NUMBER]
|
||
|
||
SYSCAL SCML,[CHAN ? NUMBER]
|
||
RETURN
|
||
|
||
CENTRY GETCPU ; RETURN CPU TIME IN 4.069 USEC
|
||
|
||
.SUSET [24,,A]
|
||
RETURN
|
||
|
||
CENTRY CPUTM ; RETURN CPU TIME IN 1/60 SECONDS
|
||
|
||
.SUSET [24,,A]
|
||
LSH A,-12.
|
||
RETURN
|
||
|
||
CENTRY SLEEP,[TIME] ; GO TO SLEEP
|
||
|
||
MOVE A,TIME
|
||
.SLEEP A,
|
||
RETURN
|
||
|
||
CENTRY ETIME ; RETURN A TIME FOR ELAPSED TIME MEASUREMENT
|
||
|
||
.RDTIME A,
|
||
LSH A,1
|
||
RETURN
|
||
|
||
CENTRY NOW,[PCAL] ; GET CURRENT DATE AND TIME
|
||
|
||
HRRZ D,PCAL ; CAL POINTER
|
||
.CALL [SETZ ? 'RQDATE ? SETZM A]
|
||
JRST [SETZ A, ? RETURN]
|
||
LDB B,[331100,,A] ; YEAR
|
||
ADDI B,1900.
|
||
MOVEM B,(D)
|
||
LDB B,[270400,,A]
|
||
MOVEM B,1(D) ; MONTH
|
||
LDB B,[220500,,A]
|
||
MOVEM B,2(D) ; DAY
|
||
LDB A,[012100,,A]
|
||
IDIVI A,60.
|
||
MOVEM B,5(D) ; SECOND
|
||
IDIVI A,60.
|
||
MOVEM B,4(D) ; MINUTE
|
||
MOVEM A,3(D) ; HOUR
|
||
|
||
MOVEI A,(D)
|
||
RETURN
|
||
|
||
CENTRY CORBLK,[A1,A2,A3,A4,A5] ; PERFORM PAGE HACKING
|
||
|
||
SYSCAL CORBLK,[A1 ? A2 ? A3 ? A4 ? A5]
|
||
RETURN
|
||
|
||
CENTRY CORTYP,[PAGNO,OUTPUT] ; GET INFORMATION ABOUT PAGE
|
||
|
||
MOVE B,OUTPUT
|
||
SYSCAL CORTYP,[PAGNO ? 2000,,(B) ? 2000,,1(B) ? 2000,,2(B)
|
||
2000,,3(B)]
|
||
RETURN
|
||
|
||
CENTRY PAGEID,[VPN,IDN] ; GET NAMED PUBLIC PAGE
|
||
|
||
SYSCAL PAGEID,[VPN ? IDN ? 2000,,B],PI$LOS
|
||
MOVE A,B
|
||
PI$RET: RETURN
|
||
PI$LOS: MOVN A,A
|
||
GO PI$RET
|
||
|
||
CENTRY PGWRIT,[JOB,VPN]
|
||
|
||
SYSCAL PGWRIT,[JOB ? VPN]
|
||
RETURN
|
||
|
||
CENTRY RSNAME ; READ SNAME
|
||
|
||
.SUSET [.RSNAM,,A]
|
||
RETURN
|
||
|
||
CENTRY SSNAME,[NAME] ; SET SNAME
|
||
|
||
MOVE A,NAME
|
||
.SUSET [.SSNAM,,A]
|
||
RETURN
|
||
|
||
CENTRY RUNAME ; READ USER NAME
|
||
|
||
.SUSET [.RUNAM,,A]
|
||
RETURN
|
||
|
||
CENTRY RSUSET,[WHERE]
|
||
|
||
HRLZ A,WHERE
|
||
TLZ A,600000 ; CLEAR DIRECTION AND BLOCK BITS
|
||
ADDI A,A ; RESULT TO A
|
||
.SUSET A ; DO IT
|
||
RETURN
|
||
|
||
CENTRY WSUSET,[WHERE,WHAT]
|
||
|
||
HRLZ B,WHERE
|
||
TLO B,400000 ; SET DIRECTION BIT
|
||
TLZ B,200000 ; CLEAR BLOCK BIT
|
||
ADDI B,A ; TAKE WORD FROM A
|
||
MOVE A,WHAT
|
||
.SUSET B ; DO IT
|
||
RETURN
|
||
|
||
CENTRY RUSET,[WHO,WHERE]
|
||
|
||
HRLZ B,WHERE
|
||
TLZ B,600000 ; CLEAR DIRECTION AND BLOCK BITS
|
||
ADDI B,A ; RESULT TO A
|
||
HRRZ A,WHO
|
||
ANDI A,17 ; CHANNEL NUMBER
|
||
LSH A,23.
|
||
IOR A,[.USET B]
|
||
XCT A ; DO IT
|
||
RETURN
|
||
|
||
CENTRY WUSET,[WHO,WHERE,WHAT]
|
||
|
||
HRLZ B,WHERE
|
||
TLO B,400000 ; SET DIRECTION BIT
|
||
TLZ B,200000 ; CLEAR DIRECTION BIT
|
||
ADDI B,A ; TAKE WORD FROM A
|
||
HRRZ C,WHO
|
||
ANDI C,17 ; CHANNEL NUMBER
|
||
LSH C,23.
|
||
IOR C,[.USET B]
|
||
MOVE A,WHAT
|
||
XCT C ; DO IT
|
||
RETURN
|
||
|
||
CENTRY WUSRVAR,[JOB,SPEC,VALUE]
|
||
|
||
SETZ A,
|
||
SYSCAL USRVAR,[JOB ? SPEC ? VALUE]
|
||
RETURN
|
||
|
||
CENTRY DELETE,[FILNAM],[FDEV,FDIR,FFN1,FFN2] ; DELETE A FILE
|
||
|
||
MOVEI A,FDEV ; POINTER TO FILESPEC
|
||
CALL FPARSE,[FILNAM,A] ; CONSTRUCT FILESPEC
|
||
MOVEI A,FDEV
|
||
CALL SYSDELETE,[A] ; DELETE THAT FILE
|
||
RETURN
|
||
|
||
CENTRY SYSDELETE,[FILSPC] ; DELETE FILE
|
||
|
||
MOVE B,FILSPC ; ADDRESS OF FILESPEC BLOCK
|
||
HRLZI C,(SIXBIT/DSK/)
|
||
SKIPN (B)
|
||
MOVEM C,(B)
|
||
.SUSET [.RSNAM,,C]
|
||
SKIPN 3(B)
|
||
MOVEM C,3(B)
|
||
SYSCAL DELETE,[(B) ? 1(B) ? 2(B) ? 3(B)]
|
||
RETURN
|
||
|
||
CENTRY RENMWO,[CHAN,FILSPC] ; RENAME FILE OPEN FOR OUTPUT
|
||
|
||
HRRZ B,FILSPC
|
||
SYSCAL RENMWO,[CHAN ? 1(B) ? 2(B)]
|
||
RETURN
|
||
|
||
CENTRY SYSRNM,[FILSP1,FILSP2]
|
||
|
||
HRRZ B,FILSP1
|
||
HRRZ C,FILSP2
|
||
SYSCAL RENAME,[(B) ? 1(B) ? 2(B) ? 3(B) ? 1(C) ? 2(C) ? 3(C)]
|
||
RETURN
|
||
|
||
CENTRY SYSLNK,[FILSP1,FILSP2]
|
||
|
||
HRRZ B,FILSP1
|
||
HRRZ C,FILSP2
|
||
SYSCAL MLINK,[(B) ? 1(B) ? 2(B) ? 3(B) ? 1(C) ? 2(C) ? 3(C)]
|
||
RETURN
|
||
|
||
CENTRY DIRSIZ,[CHAN,BLOCK] ; WRITES 2 VALUES
|
||
|
||
HRRZ B,BLOCK
|
||
SYSCAL DIRSIZ,[CHAN ? (B) ? 1(B)]
|
||
RETURN
|
||
|
||
CENTRY TRANAD,[JOB,FROM,TO,FLAGS]
|
||
|
||
HRRZ B,JOB
|
||
HRL B,FLAGS
|
||
HRRZ C,FROM ; FROM FILESPEC
|
||
HRLI C,-4 ; MAKE IT A CPTR
|
||
HRRZ D,TO ; TO FILESPEC
|
||
HRLI D,-4 ; MAKE IT A CPTR
|
||
SYSCAL TRANAD,[B ? C ? D]
|
||
RETURN
|
||
|
||
CENTRY TRANCL,[JOB,FLAGS]
|
||
|
||
HRRZ B,JOB
|
||
HRL B,FLAGS
|
||
SKIPN FLAGS
|
||
HRLI B,300003 ; DEFAULT FLAGS
|
||
SYSCAL TRANCL,[B]
|
||
RETURN
|
||
|
||
CENTRY TRANDL,[JOB,FILSPC,FLAGS]
|
||
|
||
HRRZ B,JOB
|
||
HRL B,FLAGS
|
||
HRRZ C,FILSPC
|
||
HRLI C,-4 ; MAKE IT A CPTR
|
||
SYSCAL TRANDL,[B ? C]
|
||
RETURN
|
||
|
||
CENTRY SYSLOAD,[JOB,CHAN],[RCODE,OLDIOC] ; LOAD A PROGRAM
|
||
|
||
SETZM RCODE
|
||
CALL ON,[[[2]],[[1]]]
|
||
MOVEM A,OLDIOC
|
||
|
||
SYSCAL LOAD,[JOB ? CHAN],LD$LOS
|
||
LD$1: CALL ON,[[[2]],OLDIOC]
|
||
MOVE A,RCODE
|
||
RETURN
|
||
LD$LOS: SETOM RCODE
|
||
GO LD$1
|
||
|
||
CENTRY PDUMP,[JOBCH,DSKCH]
|
||
|
||
SETZ B,
|
||
SYSCAL PDUMP,[JOBCH ? DSKCH ? B]
|
||
RETURN
|
||
|
||
CENTRY UCLOSE,[JCHAN] ; DESTROY INFERIOR JOB
|
||
|
||
MOVE A,JCHAN
|
||
ANDI A,17
|
||
LSH A,23.
|
||
IOR A,[.UCLOSE]
|
||
XCT A
|
||
RETURN
|
||
|
||
CENTRY SYSDISOWN,[JCHAN]
|
||
|
||
SYSCAL DISOWN,[JCHAN]
|
||
RETURN
|
||
|
||
CENTRY REOWN,[JCHAN]
|
||
|
||
SYSCAL REOWN,[JCHAN]
|
||
RETURN
|
||
|
||
CENTRY SYSDTACH,[JCHAN]
|
||
|
||
SYSCAL DETACH,[JCHAN]
|
||
RETURN
|
||
|
||
CENTRY SYSATACH,[JCHAN,TTY] ; TTY<0 => DEFAULT
|
||
|
||
SKIPGE TTY
|
||
GO AT$1
|
||
SYSCAL ATTACH,[JCHAN ? TTY]
|
||
AT$RET: RETURN
|
||
AT$1: SYSCAL ATTACH,[JCHAN]
|
||
GO AT$RET
|
||
|
||
CENTRY ATTY,[JOB] ; GIVE TTY TO INFERIOR
|
||
|
||
MOVE B,JOB
|
||
ANDI B,17
|
||
LSH B,23.
|
||
IOR B,[.ATTY]
|
||
SETZ A,
|
||
XCT B
|
||
SETO A,
|
||
RETURN
|
||
|
||
CENTRY DTTY,[JOB] ; TAKE TTY FROM INFERIOR
|
||
|
||
MOVE B,JOB
|
||
ANDI B,17
|
||
LSH B,23.
|
||
IOR B,[.DTTY]
|
||
SETZ A,
|
||
XCT B
|
||
SETO A,
|
||
RETURN
|
||
|
||
CENTRY WFNZ,[PTR] ; WAIT FOR WORD TO BECOME NON-ZERO
|
||
|
||
MOVE A,PTR
|
||
SKIPN (A)
|
||
.HANG
|
||
MOVE A,(A)
|
||
RETURN
|
||
|
||
CENTRY WFZ,[PTR] ; WAIT FOR WORD TO BECOME ZERO
|
||
|
||
MOVE A,PTR
|
||
SKIPE (A)
|
||
.HANG
|
||
MOVE A,(A)
|
||
RETURN
|
||
|
||
CENTRY VAL7RET,[STR] ; VALRET AN ASCIZ STRING
|
||
|
||
HRRZ A,STR
|
||
HRLI A,(.VALUE)
|
||
XCT A
|
||
RETURN
|
||
|
||
CENTRY DEMSIG,[DEMON] ; SIGNAL A DEMON PROCESS
|
||
|
||
SYSCAL DEMSIG,[DEMON]
|
||
RETURN
|
||
|
||
CENTRY SSTATUS,[VALBLK] ; RETURNS 7 VALUES
|
||
|
||
HRRZ B,VALBLK
|
||
SYSCAL SSTATUS,[MOVEM (B) ? MOVEM 1(B) ? MOVEM 2(B)
|
||
MOVEM 3(B) ? MOVEM 4(B) ? MOVEM 5(B) ? MOVEM 6(B)]
|
||
RETURN
|
||
|
||
CENTRY MAKTAG,[TAGP]
|
||
|
||
HRRZ A,TAGP ; TAG POINTER
|
||
MOVE B,(P) ; RETURN PC
|
||
MOVEM B,(A) ; SAVE RETURN PC
|
||
MOVEI B,-2(P) ; STACK POINTER BEFORE CALL
|
||
MOVEM B,1(A) ; SAVE STACK POINTER
|
||
RETURN
|
||
|
||
CENTRY GOTAG,[TAGP]
|
||
|
||
MCALL DISMISS
|
||
MOVE A,TAGP
|
||
MOVE P,1(A)
|
||
HRRZ D,(A)
|
||
GO (D)
|
||
|
||
END
|