Trailing-Edge
-
PDP-10 Archives
-
AP-D480B-SB_1978
-
tbl.bli
There are 21 other files named tbl.bli in the archive. Click here to see a list.
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
! OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
!COPYRIGHT (C) 1976,1977 BY DIGITAL EQUIPMENT CORPORATION
MODULE TBL=
BEGIN
%(
THE CHANNEL TABLE
)%
MACRO TABMAX=16$, TABSIZ=15$; % MAX CHANNELS AND SIZE %
STRUCTURE CHTB[I,J]=[(I+1)*(J+1)]((.CHTB+.I*(J+1)+.J)<0,36>);
EXTERNAL CHTB CHNLTAB[TABMAX,TABSIZ];
%(
C H A N N E L T A B L E M A C R O S
)%
MACRO FMODE=CHAN[0]$,
FDEV=CHAN[1]$,
FBUF=CHAN[2]$,
FBUFO=CHAN[2]<18,18>$,
FBUFI=CHAN[2]<0,18>$,
FOBUFH=CHAN[3]$,
FOPTR=CHAN[4]$,
FOCNT=CHAN[5]$,
FIBUFH=CHAN[6]$,
FIPTR=CHAN[7]$,
FICNT=CHAN[8]$,
FFILE=CHAN[9]$,
FEXT=CHAN[10]$,
FERR=CHAN[10]<0,12>$,
FBLK=CHAN[10]<0,18>$,
FPROT=CHAN[11]<27,9>$,
FDMODE=CHAN[11]<23,4>$,
FTIME=CHAN[11]<13,10>$,
FDATE=CHAN[11]<0,12>$,
FPPN=CHAN[12]$,
FPRJ=CHAN[12]<18,18>$,
FPRG=CHAN[12]<0,18>$,
FSIZ=CHAN[12]<18,18>$,
FSTATUS=CHAN[13]$,
FSWITCH=CHAN[14]$,
FNEWPR=CHAN[15]<0,10>$,
%(
STATUS WORD BITS
)%
FUSER=0,18$, % ENTIRE USER FIELD %
FYEND=0,1$, % ENDFILE ALLOWED %
FYREW=1,1$, % REWIND ALLOWED %
FYREAD=2,1$, % READING ALLOWED %
FYWRITE=3,1$, % WRITING ALLOWED %
FYUPDAT=4,1$, % UPDATING ALLOWED %
FYDUMMY=5,1$, % DUMMY CHANNEL %
FYERR=6,1$, % WRITE ERRORS NOT TRAPPED %
FPRIMARY=7,1$, % PRIMARY DEFAULT VALUE %
% SYSTEM BITS OF STATUS WORD %
FSYS=18,18$, % ENTIRE SYSTEM FIELD %
FROPEN=18,1$, % FILE OPEN FOR INPUT %
FWOPEN=19,1$, % FILE OPEN FOR OUTPUT %
FEOF=20,1$, % ENDFILE ENCOUNTERED %
FIS35=21,1$, % BIT 35 IS SET %
FSET35=22,1$, % SET BIT 35 ON NEXT WRITE %
FSEQ=24,1$, % PROCESSING SEQUENCE NO. %
FPGMK=25,1$, % PROCESSING PAGE MARK %
FFISTAR=26,1$, % FILE NAME IS "*" %
FXSTAR=27,1$, % EXTENSION NAME IS "*" %
FUOPEN=28,1$, % FILE OPEN FOR UPDATE %
FDEVAS=29,1$, % DEVICE ASSIGNED %
FIOERR=30,1$, % I/O ERROR DETECTED %
FNSET=35,1$; % CHANNEL NOT SET %
MACRO
XFYEND=1^0$, % ENDFILE ALLOWED %
XFYREW=1^1$, % REWIND ALLOWED %
XFYREAD=1^2$, % READING ALLOWED %
XFYWRITE=1^3$, % WRITING ALLOWED %
XFYUPDAT=1^4$, % UPDATE ALLOWED %
XFYDUMMY=1^5$, % DUMMY CHANNEL %
XFYERR=1^6$, % ALLOW WRITE ERROR TRAP %
XFPRIMARY=1^7$; % PRIMARY DEFAULT VALUE %
MACRO OTHER=-1$;
%(
MACROS WHICH DEFINE THE CALLS
)%
MACRO UMAX=0$, % MAXIMUM CHANNEL %
UMODE=1$, % DATA MODE %
UDEV=2$, % DEVICE IN SIXBIT %
UOBUFF=3$, % OUTPUT BUFFER HEADER POINTER %
UIBUFF=4$, % INPUT BUFFER HEADER POINTER %
UOBUFFR=5$, % ADDR OF OUTPUT BUFFER %
UOPTR=6$, % OUTPUT BUFFER BYTE POINTER %
UOCNT=7$, % OUTPUT BUFFER BYTE COUNT %
UIBUFFR=8$, % ADDR OF INPUT BUFFER %
UIPTR=9$, % INPUT BUFFER BYTE POINTER %
UICNT=10$, % INPUT BUFFER BYTE COUNT %
UFILE=11$, % FILE NAME IN SIXBIT %
UEXT=12$, % EXTENSION NAME IN SIXBIT %
UBLK=13$, % %
UERR=14$, % ERROR NUMBER %
UPROT=15$, % PROTECTION KEY %
UDMODE=16$, % CREATION DATA MODE %
UTIME=17$, % CREATION TIME %
UDATE=18$, % CREATION DATE %
UPPN=19$, % PPN %
USTAT=20$, % USER BITS OF STATUS WORD %
USSTAT=21$, % SYSTEM BITS OF STATUS WORD %
USWITCH=22$, % SWITCH WORD %
UREPROT=23$; % REPROTECTION WORD %
MACRO USIZ=24$; % FILE SIZE %
MACRO MAX=24$; % MAXIMUM CODE ALLOWED %
EXTERNAL IOZERROR,IOERR;
EXTERNAL CHNLMAX,INVALID;
GLOBAL ROUTINE GETTBL(CHNL,CODE)=
BEGIN
BIND VECTOR CHAN=CHNLTAB[.CHNL,0]<0,36>;
IF .CODE EQL UMAX THEN RETURN .CHNLMAX;
IF INVALID(.CHNL,14) THEN RETURN 0;
IF .CODE GTR MAX OR .CODE LSS 0 THEN (IOZERROR_.CODE;IOERR(40); RETURN 0);
CASE .CODE OF
SET
%UMAX:% .CHNLMAX;
%UMODE:% .FMODE;
%UDEV:% .FDEV;
%UOBUFF:% .FBUFO;
%UIBUFF:% .FBUFI;
%UOBUFFR:% .FOBUFH;
%UOPTR:% .FOPTR;
%UOCNT:% .FOCNT;
%UIBUFFR:% .FIBUFH;
%UIPTR:% .FIPTR;
%UICNT:% .FICNT;
%UFILE:% .FFILE;
%UEXT:% .FEXT<18,18>^18;
%UBLK:% .FBLK;
%UERR:% .FERR;
%UPROT:% .FPROT;
%UDMODE:% .FDMODE;
%UTIME:% .FTIME;
%UDATE:% .FDATE;
%UPPN:% .FPPN;
%USTAT:% .FSTATUS<FUSER>;
%USSTAT:% .FSTATUS<FSYS>^18;
%USWITCH:% .FSWITCH;
%UREPROT:% .FNEWPR;
%USIZ:% .FSIZ;
TES
END;
GLOBAL ROUTINE SETTBL(CHNL,CODE,DATA)=
BEGIN
BIND VECTOR CHAN=CHNLTAB[.CHNL,0]<0,36>;
IF .CODE EQL UMAX THEN (IF .DATA GTR TABMAX OR .DATA LSS 0
THEN (IOZERROR_.DATA; IOERR(43); RETURN 0) ELSE
(CHNLMAX_.DATA; RETURN 0));
IF INVALID(.CHNL,20) THEN RETURN 0;
IF .CODE GTR MAX OR .CODE LSS 0 THEN (IOZERROR_.CODE; IOERR(41); RETURN 0);
IF .CODE EQL USSTAT THEN DATA_.DATA^(-18);
(CASE .CODE OF
SET
%UMAX:% CHNLMAX;
%UMODE:% FMODE;
%UDEV:% FDEV;
%UOBUFF:% FBUFO;
%UIBUFF:% FBUFI;
%UOBUFFR:% FOBUFH;
%UOPTR:% FOPTR;
%UOCNT:% FOCNT;
%UIBUFFR:% FIBUFH;
%UIPTR:% FIPTR;
%UICNT:% FICNT;
%UFILE:% FFILE;
%UEXT:% FEXT<18,18>;
%UBLK:% FBLK;
%UERR:% FERR;
%UPROT:% FPROT;
%UDMODE:% FDMODE;
%UTIME:% FTIME;
%UDATE:% FDATE;
%UPPN:% FPPN;
%USTAT:% FSTATUS<FUSER>;
%USSTAT:% FSTATUS<FSYS>;
%USWITCH:% FSWITCH;
%UREPROT:% FNEWPR;
%USIZ:% FSIZ;
TES)
_ .DATA;
END;
END ELUDOM