Trailing-Edge
-
PDP-10 Archives
-
decuslib10-05
-
43,50337/08/simrpa.mac
There are 3 other files named simrpa.mac in the archive. Click here to see a list.
00010 SUBTTL Definitions used chiefly in the run time system
00020 SALL
00030 SEARCH SIMMAC,SIMMCR
00040 RUNIV SIMRPA RTS parameters and definitions ;[104]
00050
00060
00070
00080 COMMENT;
00090 AUTHOR: Lars Enderin 1973-1974
00100 PURPOSE: Definition of macros, constants, and symbols used in run time
00110 system modules and a few compiler modules.
00120 Must be assembled together with SIMMAC and SIMMCR before
00130 assembling any RTS module.
00140 ;
00150
00160 IF1,<END>
00170 PRINTX <UPDATES: [14 22 12,24,41,44,61,62,63,104,166,225,242,243,244,247,273,304] 12-Apr-78/LE>
00180
00190 SUBTTL MACRO DEFINITIONS
00200
00210 ;Access to low segment variables
00220
00230 DEFINE LOWADR(A)<
00240 IFNB <A>,<XLOW=A>
00250 IFB <A>,<XLOW=XIAC>
00260 HRRZ XLOW,.JBOPS
00270 >
00280 DEFINE SETLOW(A)<
00290 IFNB <A>,<XLOW=A>
00300 IFB <A>,<XLOW=XIAC>
00310 >
00320
00330 ;Miscellaneous macros
00340 DEFINE IFNONE(A)<CAIN A,NONE>
00350 DEFINE TRIMSTACK <SUB XPDP,[1,,1]>
00360 DEFINE ERRMAC(A)<IRP A,<
00370 DEFINE A'ERR(N,MSG)<
00380 RTSERR <N+Q'A'ENO>
00390 IFN QDEBUG,<NOP [ASCIZ/
00400 MSG
00410 /]
00420 >> ;;[41] To continue after a RTS error
00430
00440 DEFINE A'ERC(C,N,MSG)<
00450 RTSERR <C>,<N+Q'A'ENO>
00460 IFN QDEBUG,<NOP [ASCIZ/
00470 MSG
00480 /]
00490 >>>>
00500
00510 DEFINE RIGHTHALF(A)<
00520 SIZE(Q,A)
00530 IFN <Q-^D18>,<Q==0>
00540 IFN <%'A-^D35>,<Q==0>
00550 IFE <Q>,
00560 <CFAIL A is not right half>
00570 >
00580
00590
00600 DEFINE SAVEALLACS(y)<;;[242]
00610 EXCH X16,.JBOPS
00620 q==YUUOAC
00630 IFNB <y>,<q==y>;;[242]
00640 ST X17,q+X17(X16)
00650 LI X17,q(X16)
00660 BLT X17,q+X15(X16)
00670 L X17,X16
00680 EXCH X17,.JBOPS
00690 ST X17,q+X16(X16)
00700 L X17,q+X17(X16)
00710 PURGE q
00720 >
00730
00740 ;-- Macros for SIMDDT interface ---;
00750
00760 DEFINE CALLOW <SETZM YDSCSW(XLOW)> ;;Allow ^C - REENTER
00770 DEFINE CDEFER <AOS YDSCSW(XLOW)> ;;Defer call to SIMDDT to obj.code ret.
00780 DEFINE CENABLE <SOS YDSCSW(XLOW)>
00790 DEFINE CFORBID <HRROS YDSCSW(XLOW)>
00800
00810
00820 ;[41]
00830 ;Macro for retrieval of inserted value
00840 ;from SIMDDT at error recovery
00850
00860 DEFINE NEWVALUE(X)=<
00870 LOWADR
00880 L X,YDSIAR(XLOW)
00890 >
00010 SUBTTL Register assignments
00020
00030 XSAC= 1 ; System ac - parameters to RTS
00040 XTAC= 2 ; (Additional) parameter to some RTS routines
00050 XZBI= 3 ; (New) block instance pointer
00060 XADR= 4 ; Code address
00070 XX= 5 ; Temporary pointer
00080 XZ= 6 ; Temporary pointer
00090 XI= 7 ; Temporary ac
00100 XJ= 10 ; Temporary ac
00110 XK= 11 ; Temporary ac
00120 XL= 12 ; Temporary ac
00130 XM= 13 ; Temporary ac
00140 XN= 14 ; Temporary ac
00150
00160
00170 XRAC= XWAC1 ; Result accumulator (returned by thunk or procedure etc.)
00180 XRAC1= XRAC+1 ; Extension of result (long real,etc)
00190
00200 XXPRL= XSAC ; Prefix level of a class
00210 XXZBI= XSAC ; Block instance as parameter
00220 XXZPC= XSAC ; Prototype pointer
00230 XZAC= XSAC ; Points to acs object
00240
00250 XZPC= XSAC ; REF(ZPC)
00260 XZCP= XSAC ; REF(ZCP)
00270 XZDR= XX ; REF(ZDR)
00280 XXZ= XZBI ; Block instance pointer as parameter
00290
00300 XOUT= XADR ; Exit address
00310
00320 XLOW= XIAC ; Standard register for access to low segment static area
00330
00340 ;Registers used by OCIN and IO:
00350 XSPEC= X10 ;Pointer run runswitch area record ZSW
00360 XBASE= X11 ;Base register to dynamic area
00370 XBYTE= X12 ;Current byte from a file specification
00380 XNAME= X13 ;Current name from a file specification
00390 XBUF= X14 ;Pointer to current input buffer
00400 ;[61]
00410 XBH= XWAC5 ;Pointer to buffer area
00420 XCC= XWAC4 ;Character count
00430 XIP= XWAC6 ;Byte pointer for Image
00440 XSW= X14 ;Copy of flags for file object
00450
00460 ;Base address register for SIMDDT module:
00470 XDBAS= X14
00010 SUBTTL SWITCHES
00020
00030
00040 ;Common switches used by OCIN and IO:
00050
00060 DSW(SWIND,YOCSW,36,XLOW) ;On if indirect specification file being read
00070 DSW(SWTTY,YOCSW+1,36,XLOW) ;On if specification file is being read from tty
00080 DSW(SWSYSR,YOCSW+2,36,XLOW) ;On if sysin has been read
00090 DSW(SWSYSE,YOCSW+3,36,XLOW) ;On if end of file occurred on sysin
00100 DSW(SWSYST,YOCSW+4,36,XLOW) ;On if sysin from tty
00110 DSW(SWSYSI,YOCSW+5,36,XLOW) ;On if sysin was an indirect file
00120 DSW(SWERR,YOCSW+6,36,XLOW) ;On if error in DSK SPECIFICATION FILE
00130 DSW(SWGSW,YOCSW+7,36,XLOW) ;On if global switch, off if local
00140 DSW(SWSWERR,YOCSW+10,36,XLOW) ;On if error during switch handling
00150 DSW(SWHLP,YOCSW+11,36,XLOW) ;On if help message typed
00160 DSW(SWSYSD,YOCSW+12,36,XLOW) ;On if sysin not from disk or tty
00170 DSW(SWCRLF,YOCSW+13,36,XLOW) ;On if cr-lf is wanted in tty message
00180 DSW(SWTR,YOCSW+14,36,XLOW) ;On if text record being scanned
00190 DSW(SWLOK,YOCSW+15,36,XLOW) ;On if lookup being performed
00200 DSW(SWGC,YOCSW+16,36,XLOW) ;On if garbage collection performed
00210
00220 QSWNO=^D15 ;Number of switches
00230
00240 DEFINE ZEROSW=<
00250 SETZM X0,YOCSW(XLOW)
00260 HRLI X0,YOCSW(XLOW)
00270 HRRI X0,YOCSW+1(XLOW)
00280 BLT X0,YOCSW+QSWNO-1(XLOW)
00290 >
00300
00310 ;Switches used in SA and SADEB
00320 ;[247]
00330 DSW (SAGCPE,YSASW,0) ;On if i/o error on gcp.tmp
00340 DSW (SWGCTE,YSASW,1) ;On if test output from gc
00350 DSW (SWGCT2,YSASW,2) ;On if output on tty
00360 DSW (SWGCT3,YSASW,3) ;On if output on sysout
00370 DSW (SWGCT4,YSASW,4) ;On if gc runtime and low seg limit
00380 ; should be logged
00010 SUBTTL RDINIT, definitions for Random Drawing [243]
00020
00030
00040 DEFINE RDINIT(e)< ;;[243]
00050 SEARCH SIMMAC,SIMMCR
00060 EXTERN .YFARG,.YFADR ;;[205]
00070 SALL
00080 RTITLE RD'e
00090 ENTRY .RD'e
00100 ERRMAC RD
00110 MACINIT
00120 DEFINE XX(N)<
00130 DEFINE ARG'N<N-1(XTAC)>
00140 >
00150 XX 1
00160 XX 2
00170 XX 3
00180 XX 4
00190 XX 5
00200
00210 SYN ARG1,RESULT
00220
00230 DEFINE RAND(N)<;;Basic drawing [1,2^35-1]
00240 ;;The random seed at @ARG'n is updated
00250 L X0,@ARG'N
00260 SKIPGE ;;Shift out sign bit if seed is negative
00270 ADD [377777777777]
00280 TRO 1 ;;Make odd always
00290 MUL X0,[QMULTIPLIER]
00300 ST X1,@ARG'N ;;Next seed value
00310 TLZ X1,400K ;;Ignore sign (treat as pos number [1,2^35-1])
00320 >
00330
00340 DEFINE MAKEREAL(N<1>)< ;;(0,2^35) to (0,1.0) floating point
00350 FLTR X0,X1
00360 FSC X0,N-44
00370 >
00380
00390 DEFINE AR(A,B)<OFFSET(ZAR'A)+2(XWAC'B)>
00400
00410 DEFINE ARTEST(A,B)<
00420 HLRZ XWAC'A,OFFSET(ZARSUB)(XWAC'B)
00430 CAIE XWAC'A,QTSTAR
00440 >
00450
00460 QMULTIPLIER==1
00470 REPEAT ^D15,<QMULTIPLIER==QMULTIPLIER*5>;RESULT IS 5**15
00480
00490 QTSTAR==(<QREAL>B<%ZARTYP>+1B<%ZARSUB>)
00500 >;;End RDINIT
00010 SUBTTL Macro definitions used by SA and SADEB
00020
00030 DEFINE TEXT(T)<;; Output text t on tty
00040 IFN QDEBUG,<
00050 IFONA SWGCT2
00060 >
00070 OUTSTR [ASCIZ /T/]
00080 IFN QDEBUG,<
00090 IF
00100 IFOFFA SWGCT3
00110 GOTO FALSE
00120 THEN
00130 LI X2,[ASCIZ /T/]
00140 EXEC SAPDTO
00150 FI
00160 >
00170 >
00180
00190
00200 DEFINE RTEXT(T)<;; Output <CR><LF>'t
00210 IFN QDEBUG,<
00220 IFONA SWGCT2
00230 >
00240 OUTSTR [ASCIZ /
00250 'T/]
00260 IFN QDEBUG,<
00270 IF
00280 IFOFFA SWGCT3
00290 GOTO FALSE
00300 THEN
00310 LI X2,[ASCIZ /
00320 'T/]
00330 EXEC SAPDTO
00340 FI
00350 >
00360 >
00370
00380 DEFINE RRTEXT(T)<;; Output <CR><LF><CR><LF>t
00390 IFN QDEBUG,<
00400 IFONA SWGCT2
00410 >
00420 OUTSTR [ASCIZ /
00430
00440 'T/]
00450 IFN QDEBUG,<
00460 IF
00470 IFOFFA SWGCT3
00480 GOTO FALSE
00490 THEN
00500 LI X2,[ASCIZ /
00510
00520 'T/]
00530 EXEC SAPDTO
00540 FI
00550 >
00560 >
00010 SUBTTL CONSTANTS
00020
00030 .JBOPS= 135 ; Right half will contain base of static low segment data
00040
00050 ;[14 22 15] ZYQ from 0 to 217
00060 QFORER==215 ;Error number for library error
00070 QILLUUO==216 ;Error number for illegal UUO
00080 QRFAIL==217 ;Error number for RFAIL
00090 QIOLP= ^D60 ; Default value of linesperpage
00100 QPDLEN= 100 ; Length of pushdown stack
00110 QXALEN= QNAC ; Length of extended accumulator area
00120 QPOLMI= 2000 ; Min data pool length
00130 QSALIM=2*QNAC+2 ;Reserve this space at end of pool
00140 QZERLG=400 ;Number of words in ZER record, default.
00150 QZERNO=1 ;Number of ZER records allocated initially, default.
00160 QDSLG=15000 ;[304] Length of SIMDDT program
00170 QDSLGA=^D118+2*<%ZACSVA+4>;Length of additional data area
00180
00190 ;Entry point offsets for SIMDDT
00200 QDSINB= 10 ;Breakpoint
00210 QDSINC= 12
00220 QDSINE= 13 ;Error
00230 QDSINR= 11 ;REENTER
00240 QDSINI= 2 ;Initialise
00250 QDSINS= 12 ;Remove any old breakpoints (on restart)
00260
00270 ;[41] Define continuation codes used in RTSERR calls and in SIMDDT
00280 QDSCON== 1 ;Continue with no arguments
00290 QDSNIN== 2 ;Continue with new integer argument in YTXARG(XLOW)
00300 QDSNIM== 3 ;Continue with new image read from tty
00310
00320
00330
00340 ;Origins of error codes
00350 DEFINE ERRCODE(N0,A)<..N==0
00360 IFNB <N0>,<..N=N0>
00370 IRP A,<
00380 Q'A'ENO=..N
00390 >
00400 PURGE ..N
00410 >
00420
00430
00440 ; Note!!! the following numbers must match those in SIMEDS.DOC !!!
00450 ERRCODE QRTSE0,OC
00460 ERRCODE 21,CP
00470 ERRCODE 35,CS
00480 ERRCODE 51,IO
00490 ERRCODE 100,PH
00500 ERRCODE 120,RD
00510 ERRCODE 135,SA
00520 ERRCODE 143,SS
00530 ERRCODE 143,SU
00540 ERRCODE 154,TX
00550
00560 ;Common constants for OCIN and IO:
00570 DV.TTY==1B14_-^D18
00580 DV.DSK==1B1_-^D18
00590 DV.MTA==1B13_-^D18
00600 DV.TTA==1B4_-^D18
00610 DV.TTU==1B5_-^D18
00620 DV.DTA==1B11_-^D18
00630 DV.DIR==1B15_-^D18
00640
00650 ;[105] Data modes
00660
00670 .IOASL==0 ;ASCII
00680 .IOASL==1 ;ASCII line
00690 .IOPIM==2 ;Packed image
00700 .IOIMG==10 ;Image
00710 .IOIBM==13 ;Image binary
00720 .IOBIN==14 ;(Blocked) binary
00730 .IOIDP==15 ;Image dump
00740 .IODPR==16 ;Dump as records without core buffering
00750 .IODMP==17 ;Dump one record without core buffering
00760
00770 ;Error codes for FORTRAN library functions, given in ac field of error instruction+1
00780
00790 ER%LIB==10 ;Normal library error, has message pointed to by next instr
00800 ER%APR== 2 ;Faked apr trap, no message (arithmetic overflow in limiting cases)
00810
00820 ;Bit masks for interrupt conditions
00830
00840 AP.REN=400000 ;Repetitive enable
00850 AP.ILM= 20000 ;Illegal memory reference
00860 AP.NXM= 10000 ;Non-existent memory (detects NONE)
00870 AP.FOV= 100 ;Floating-point overflow
00880 AP.AOV= 10 ;Arithmetic overflow
00010 SUBTTL RUN TIME RECORDS
00020
00030 ; ZFS record (file specification table entry)
00040 DF ZFSLNK,-1,18,17 ;Link to next iospec entry
00050 DF ZFSNAM,0,36,35 ;Sixbit logical device name
00060 DF ZFSDEV,1,36,35 ;Sixbit physical device name
00070 DF ZFSSIZ,2,18,17 ;Initial file size (blocks)
00080 DF ZFSLIM,2,18,35 ;Max file size (blocks)
00090 DF ZFSIML,3,18,17 ;Max image length for a directfile
00100 DF ZFSFLG,3,18,35 ;Flag bits, e g access mode
00110 DF ZFSAPP,3,1,35 ;Mode append
00120 DF ZFSSUB,3,1,34 ;On if this entry has sub-file directory
00130 DF ZFSWDB,3,1,31 ;[24] See ZFIWDB
00140 DF ZFSNUM,3,1,32 ;[24] See ZFINUM
00150 DF ZFSRON,3,1,33 ;[24] See ZFIRON
00160 DF ZFSWLR,3,3,33 ;[24] Combines ZFSWDB,-NUM,-RON
00170 DF ZFSFIL,4,36,35 ;Sixbit file name
00180 DF ZFSEXT,5,18,17 ;Sixbit file extension
00190 DF ZFSBUF,5,18,35 ;Number of buffers
00200 DF ZFSPT,6,9,8 ;Protection code
00210 DF ZFSPRJ,7,18,17 ;Project number
00220 DF ZFSPRG,7,18,35 ;Programmer number
00230 DF ZFSADR,7,36,35 ;Address to SFD block
00240 DF ZFSARG,10,36,35 ;Argument
00250 DF ZFSSCN,11,36,35
00260 DF ZFSPPN,12,36,35 ;PPN in case of SFD
00270 DF ZFSSFD,13,36,35 ;Name of sub-file directory
00280
00290 QFSLNG=11 ;Length of ZFS record without sfd:S
00300
00310
00320 ; ZFI RECORD (FILE OBJECT)
00330 DF ZFISPC,2,36,35 ;FIRST WORD OF TEXT VARIABLE FOR FILE PARAMETER
00340 DF ZFIFTR,2,17,35 ;POINTER TO FILE NAME RECORD
00350 DF ZFIFLN,2,17,18 ;LENGTH OF FILE SPECIFICATION RECORD
00360 DF ZFIIMG,4,36,35 ;FIRST WORD OF TEXT VARIABLE FOR IMAGE
00370 DF ZFIICP,5,18,35 ;CURRENT POSITION
00380 DF ZFIOPN,6,1,0 ;OPEN FAG
00390 DF ZFIIF,6,1,1 ;INFILE FLAG
00400 DF ZFIOF,6,1,2 ;OUTFILE AND PRINTFILE FLAG
00410 DF ZFIPF,6,1,3 ;PRINTFILE FLAG
00420 DF ZFIDF,6,1,4 ;DIRECTFILE FLAG
00430 DF ZFIIN,6,1,5 ;THIS FILE CAN DO INPUT
00440 DF ZFIOUT,6,1,6 ;THIS FILE CAN DO OUTPUT
00450 DF ZFISFD,6,1,7 ;This file has a SFD record
00460 DF ZFIDE,6,1,8 ;This file has an extended enter block
00470 DF ZFIAPP,6,1,9 ;Append mode for this file
00480 DF ZFIEND,6,1,10 ;Temporary end of file flag
00490 DF ZFIECT,6,1,11 ;Eject has been done
00500 DF ZFIFO,6,1,12 ;First output flag
00510 DF ZFINB,6,1,13 ;Next sequential block should be read
00520 ;(Directfile only)
00530 DF ZFIWDB,6,1,14 ;[24] Images on word boundary in the file
00540 DF ZFINUM,6,1,15 ;[24] File is line numbered (implies ZFIWDB)
00550 DF ZFIRON,6,1,16 ;[24] Access:RONLY
00560 DF ZFIWLR,6,3,16 ;[24] Combines ZFIWDB,-NUM,-RON
00570 DF ZFILBO,6,1,17 ;[44] Last call was to BREAKOUTIMAGE
00580 DF ZFIFND,6,1,18 ;[61] On when no dialogue is wanted on file
00590 ; initialization (FIND??FILE called)
00600 DF ZFIPGT,6,1,19 ;[63] On when OUTPUT or INPUT proc in progress on file
00610 DF ZFINLE,6,1,20 ;[105] No lookup or enter should be done
00620 DF ZFIBNW,6,1,21 ;[105] Buffers not wanted
00630 DF ZFICHN,10,4,12 ;Channel number associated with this file object
00640 ;Placed in ac position for use in uuo's
00650 DF ZFIBUF,10,18,35 ;Number of buffers
00660 DF ZFIKAR,11,36,35 ;Device characteristics file status and type information
00670 DF ZFITTY,11,1,14 ;Device is a tty
00680 DF ZFIMTA,11,1,13 ;Device is a magtape
00690 DF ZFIDSK,11,1,1 ;Device is a DSK
00700 DF ZFITA,11,1,4 ;TTY is controlling the job
00710 DF ZFITU,11,1,5 ;TTY is in use as a user terminal
00720 DF ZFIDTA,11,1,11 ;Device is a dec tape
00730 DF ZFIDIN,11,1,16 ;This device can do input
00740 DF ZFIDOU,11,1,17 ;This device can do output
00750 DF ZFISTI,12,36,35 ;Initial file status
00760 DF ZFIDMO,12,4,35 ;[61] Data mode, part of status
00770 DF ZFIUWC,12,1,31 ;[61] Use word count when computing size of data in buffer
00780 DF ZFISYN,12,1,30 ;[61] On if synchronous input is wanted (stop on each buf)
00790 DF ZFIDVN,13,36,35 ;Sixbit device name
00800 DF ZFIOBH,14,18,17 ;Address of output buffer header block
00810 DF ZFIIBH,14,18,35 ;Address of input buffer header block
00820 ;The following information is used in lookup or enter
00830 DF ZFIFIL,15,36,35 ;File name (sixbit)
00840 DF ZFIEXT,16,18,17 ;File extension
00850 DF ZFID1,16,12,35 ;File creation date
00860 DF ZFIPT,17,9,8 ;File protection
00870 DF ZFIMOD,17,4,12 ;Data mode
00880 DF ZFITIM,17,12,25 ;Creation time of day
00890 DF ZFID2,17,12,35 ;User supplied date
00900 DF ZFIPRJ,20,18,17 ;Project number
00910 DF ZFIPRG,20,18,35 ;Programmer number
00920 DF ZFIARG,20,36,35 ;Link to ZYS record when SFD
00930 DF ZFINAM,21,36,35 ;Logical file name
00940 DF ZFIPPN,22,36,35 ;Save area for ppn between lookup's
00950 DF ZFIBFS,23,36,35 ;Buffer size for this file
00960
00970 QFILNG= 24 ;Length of file object
00980
00990 ; ZFI class ZIF - infile object
01000 DF ZIFEND,7,36,35 ;Endfile flag (byte pointer definition)
01010 DSW ZIFEND,7,36 ;Switch definition
01020
01030 QIFLNG= 24 ;Length of infile object
01040
01050 ; ZFI CLASS ZOF - Outfile object
01060 DF ZOFBLK,24,18,17 ;No of blocks written
01070 DF ZOFLIM,24,18,35 ;Max no of blocks
01080
01090 QOFLNG= 25 ;Length of outfile object
01100
01110 ; ZOF CLASS ZPF - printfile object
01120 DF ZPFSP,25,18,17 ;Spacing
01130 DF ZPFLP,25,18,35 ;Linesperpage
01140 DF ZPFLL,26,18,17 ;Last printed line
01150 DF ZPFLIN,26,18,35 ;Line
01160
01170 QPFLNG= 27 ;Length of printfile object
01180
01190 ; ZFI CLASS ZDF - directfile object
01200 DF ZDFEND,7,36,35 ;Endfile flag - same position as for infile !!
01210 DSW ZDFEND,7,36 ;Switch definition
01220 DF ZDFIML,24,18,17 ;Max image length
01230 DF ZDFLIM,24,18,35 ;Max valid ZDFLOC (last written record number)
01240 DF ZDFWCT,25,18,17 ;Buffer word count ;[5]RTS
01250 DF ZDFLOC,25,18,35 ;LOCATION
01260 DF ZDFMOD,26,1,0 ;On if outimage has been done on directfile buffer
01270 DF ZDFOUT,26,1,1 ;On if outimage was done last, not inimage
01280 DF ZDFBLK,26,18,35 ;Number of written or read physical
01290 ;blocks during one inimage or one outimage
01300
01310 QDFLNG= 27 ;Length of directfile object
01320
01330 ; CLASS ZBH - buffer header
01340 DF ZBHLEN,0,18,17 ;Buffer area length
01350 DF ZBHFRE,0,1,0 ;Occupied flag
01360 DF ZBHLNK,0,17,35 ;Link to next buffer area
01370 DF ZBHCON,0,1,18 ;Consecutive buffer area flag
01380 DF ZBHUSE,1,1,0 ;Buffer ring use bit
01390 DF ZBHZBU,1,18,35 ;Current buffer
01400 DF ZBHBUP,2,36,35 ;Byte pointer for current buffer
01410 DF ZBHCNT,3,36,35 ;Count of remaining characters in current buffer
01420
01430
01440 ; Class ZSW - runswitch record
01450 DF ZSWDEV,0,36,35 ;Device in sixbit
01460 DF ZSWFIL,1,36,35 ;File name in sixbit
01470 DF ZSWEXT,2,18,17 ;Extension in sixbit
01480 DF ZSWPPN,4,36,35 ;PPN
01490
01500 ; Class ZBU - I/O buffer
01510 DF ZBUSTA,4,18,35 ;File status when monitor finished buffer processing
01520 DF ZBUUSE,5,1,0 ;Buffer use bit - indicates active data
01530 DF ZBUSIZ,5,17,17 ;Buffer data area size (incl. the next word)
01540 DF ZBUZBU,5,18,35 ;Address of next buffer in buffer ring
01550 DF ZBUWCT,6,18,35 ;Number of actual data words in buffer
01560 DF ZBUDAT,7,36,35 ;Buffer data area
01570
01580
01590 ; Declaration of ZYS used as SFD block*
01600 DF ZYSARG,2,36,35 ;Argument
01610 DF ZYSP1,4,36,35 ;PPN
01620 DF ZYSSFD,5,36,35 ;First SFD name
01630
01640 ; Declarations of ZXB used as extended lookup block
01650 DF ZXBLG,1,18,35 ;Length of ZXB record
01660 DF ZXBARG,2,36,35 ;Argument
01670 DF ZXBP2,3,36,35 ;PPN or if left half=0 a pointer to sfd-block
01680 DF ZXBFIL,4,36,35 ;File name
01690 DF ZXBEXT,5,18,17 ;Extension
01700 DF ZXBPRT,6,36,35 ;Protection etc
01710 DF ZXBPT,6,9,8 ;[61] Protection field
01720 DF ZXBLNG,7,36,35 ;File length in words
01730 DF ZXBLEN,12,36,35 ;Estimated file length
01740 DF ZXBALC,13,36,35 ;Allocated file length
01750
01760
01770
01780 Q==<OFFSET(ZBHFRE)>
01790
01800 ASSERT <IFN %ZBHFRE,<CFAIL ZBHFRE BIT NOT FIRST AS ASSUMED>>
01810
01820 OPDEF FREE [SKIPL Q]
01830 OPDEF NOTFREE [SKIPGE Q]
01840 OPDEF IFFREE [SKIPGE Q]
01850
01860 QZDRZPB=1B17-OFFSET(ZDRZPB)
00010 SUBTTL SUBROUTINE DECLARATIONS
00020
00030 ; Procedure summary
00040 ; =================
00050
00060 DEFINE PROCINIT(A)=<
00070 QOCIN== 1
00080 QOCIO== 2
00090 QIO== 4
00100 QIONF= 10
00110 QOCEP= 20 ;;[61]
00120 QALL= QIO+QIONF+QOCEP+QOCIN+QOCIO ;;[61]
00130 QRTSYM= 777
00140 Q==Q'A ;;Defines current module
00150 DEFINE X(N,E,D,U,O)<
00160 %U==0 ;;Defines using modules
00170 IRP U,<%U==%U+Q'U>
00180 IFN <QRTSYM-Q'D>,< ;;Not in the transfer vector
00190 IFN <Q&%U>,<IFE <<Q'D>&Q>,<EXTERN E>> ;;Entry not in current module
00200 IFN <<Q'D>&Q>,<IFN <Q'D-%U>,<INTERN E>> ;;Entry in current module
00210 ;;and used in other modules
00220 >
00230 IFN <Q&%U>,< ;;Used in this module, define opcode
00240 IFB <O>,<
00250 OPDEF N [PUSHJ XPDP,E]
00260 >
00270 IFNB <O>,<
00280 OPDEF N [O E]
00290 > >
00300 >;;END X
00310
00320 ;; CALL FORMAT: X(name,entry point,defining module,using modules[,opcode])
00330
00340 X(COPYSPEC,.OCIN6,OCIN,<OCIN,IONF>) ;;Copies information from ZFD to ZFI
00350 X(CREATEFILE,.IOCF,IONF,<OCIN,IONF>) ;;Allocates buffers
00360 X(ERRFILE,.IOERF,OCIO,<OCIN,IO>) ;;Same as FILEERROR
00370 ;;but file ref in XWAC1
00380 X(FILEENTER,.IOENT,IONF,<OCIN,IONF>) ;;Enters a file
00390 X(FILEERROR,.IOFER,OCIO,IONF) ;;Types standard error text
00400 ;;and logical name on tty
00410 X(FILELOOKUP,.IOLOK,IONF,<OCIN,IONF>) ;;LOOKUP a file
00420 X(FINDLOGICAL,.OCINJ,OCIN,<OCIN,IONF>) ;;Retrieves logical name
00430 ;;from a file spec
00440 X(FIXSWITCH,.OCINF,OCIN,<OCIN,IONF>) ;;Scans and processes a number of
00450 ;;switches
00460 X(FREEBUFF,.OCINC,OCIO,<OCIN,IO>) ;;Frees a buffer area
00470 X(GETBUFF,.OCIN7,OCIN,<OCIN,IONF>) ;;Finds a free i/o buffer
00480 X(GETBYTE,.OCING,OCIO,<OCIN,OCIO,IONF>) ;;Fetches next byte from YOCBUF,
00490 ;;skips line feed
00500 X(GETCHANNEL,.OCIN8,OCIO,<OCIN,IONF>) ;;LOCATES A FREE CHANNEL IN YIOCHTB
00510 X(GETNAME,.OCIN1,OCIO,<OCIN,IO,IONF>) ;;Packs next symbol in XNAME
00520 X(GETREST,.OCINH,OCIO,OCIN) ;;Same as GETNAME but first byte
00530 ;;already in XBYTE
00540 X(GETSPEC,.OCINB,OCIN,<OCIN,IONF>) ;;Unpacks a file specification into ZFD
00550 X(LEGAL,.OCLA,OCIO,<OCEP,OCIO>) ;;[61] Skip if (X1) is a legal address
00560 X(LINKBUFF,.OCIND,OCIO,<OCIN,IONF>) ;;Links a buffer ring
00570 X(OUTENTER,.OCINI,OCIN,<OCIN,IONF>) ;;Enters an out- or printfile
00580 ;;possibly in append mode
00590 X(OUTOCT,.OCOO,OCIO,<IONF,OCIO,OCEP>) ;;[61] Types last 3 octal digits of X0
00600 X(PRINTFILE,.OCIN9,OCIO,<OCIO,OCIN>) ;;[61] Prints a file spec on tty
00610 X(PRINTSPEC,.OCINE,IONF,<OCIN,IONF>) ;;Prints the entire file spec on tty
00620 X(REOPEN,OCINK,RTSYM,IO) ;;Reopens a file already used
00630 X(SETUPFILE,IOCOM,RTSYM,IO) ;;Performs all common file actions
00640 X(SPECCOPY,.OCINZ,OCIN,<OCIN,IONF>) ;;[225] Copies spec to YOCBUF from
00650 ;; any input source
00660 X(TTYSPEC,.OCINY,OCIN,<OCIN,IONF>) ;;[225] Gets specification line from TTY
00670 X(TYPENAME,.OCIN2,OCIO,ALL) ;;Prints the contents of X0 in sixbit
00680 ;;on tty
00690 X(TYPESPEC,.IOTYS,OCIO,ALL) ;;[61] Type entire file spec
00700 X(TYPDEC,.OCDT,OCIO,<OCIO,OCEP>) ;;[61] Output X0 in decimal
00710 X(TYPOCT,.OC8T,OCIO,<OCIO,OCEP>) ;;[61] Output X0 in octal
00720
00730 OPDEF OP [HRLI]
00740 OPDEF OPZ [HRLZI]
00750 QCHN==OFFSET(ZFICHN)
00760
00770 DEFINE FILOP(OP,X,Y)<
00780 IFB <Y>,<HLL X,QCHN(XWAC1)>
00790 IFNB <Y>,<HLL X,QCHN(Y)>
00800 TLO X,(<OP>)
00810 XCT X
00820 >
00830 DEFINE IOCHECK(X,Y,M)<
00840 IFB <M>,<HRRI X,740000>
00850 IFNB <M>,<HRRI X,M>
00860 FILOP(STATZ,X,Y)
00870 >
00880
00890 IFE QDEC20,<OPDEF PBOUT [OUTCHR X1]> ;;[225]
00900
00910 PURGE %U,Q,QIO,QIONF,QOCIN,QOCIO,QRTSYM
00920 > ;End of PROCINIT
00010 SUBTTL Prototypes and symbol tables for system classes
00020
00030 QFIEBL== -3 ;Default EBL of file classes
00040 QFIDLE==2-QFIEBL ;Corresponding display length
00050
00060 ;[63] Add ZCPPTA field
00070 DEFINE DCLASS(NAM,ZCP,GCI,PTA,PRL,BLE,DLE,SBL,EBL,NRP,PL,KDP,PAR)<
00080 DEFINE D%'NAM<
00090 IFG <NAM-400K>,<EXTERN NAM'%S,NAM'%I,NAM'%M,NAM'%Y,NAM'%D>
00100 IFNB <ZCP>,<
00110 IF1,<IFNDEF .'ZCP,<EXTERN .'ZCP>>
00120 Z .'ZCP
00130 >
00140 IFB <ZCP>,<Z>
00150 BYTE (1)KDP(3)GCI(1)PTA(13)0(18)NAM'%S ;[63]
00160 Z NAM'%I ;; INNER
00170 XWD SBL,PRL
00180 .'NAM:: XWD BLE,NAM'%M ;;Block length,map
00190 XWD EBL,NAM'%Y ;;Effective block level, symbol table
00200 XWD NRP,DLE ;;No of params,display length
00210 BYTE (1)PAR(17)0(18)NAM'%D ;; Declaration coding
00220 IFNB <PL>,<
00230 PL ;;Formal param. descriptor
00240 >
00250 IFG <NAM-400K>,<
00260 IFN <<.-.'NAM>-<NAM'%E-NAM>>,<CFAIL INCONSIST. PROT. FOR NAM>
00270 >>
00280 DEFINE E%'NAM<
00290 IFNB <ZCP>,<
00300 IF1,<IFNDEF .'ZCP,<EXTERN .'ZCP>>
00310 Z .'ZCP
00320 >
00330 IFB <ZCP>,<Z>
00340 BYTE (1)KDP(3)GCI(1)PTA(13)0(18)0 ;;[63]
00350 Z 0 ;; INNER
00360 XWD SBL,PRL
00370 .'NAM:: XWD BLE,0 ;;Block length,map
00380 XWD EBL,0 ;;Effective block level, symbol table
00390 XWD NRP,DLE ;;No of params,display length
00400 BYTE (1)PAR(17)0(18)0 ;; Declaration coding
00410 IFNB <PL>,<
00420 PL ;;Formal param. descriptor
00430 >
00440 IFG <NAM-400K>,<
00450 IFN <<.-.'NAM>-<NAM'%E-NAM>>,<CFAIL INCONSIST. PROT. FOR NAM>
00460 >>>
00470
00480 DEFINE DZSMCL(SN,RN,SA)<
00490 SIXBIT/SN/
00500 N==0
00510 IRPC SN,<N==N+1>
00520 IFL <N-7>,<Z>
00530 IFNB <SA>,<N==SA>
00540 IFB <SA>,<N==.+1>
00550 RN'%Y:: <QSYSCL>B<%ZSMTYP>+N
00560 >
00570
00580 ;[14 22 12] Define ZSDSPI codes
00590 SCALAR<Q,QIMAIN,QISYSIN,QISYSOUT,QIFIRST,QILAST,QISUC,QIPRED,QIPREV,QIEVTIME,QINEXTEV,QITIME,QICURRENT>
00600
00610 ;[14 22 12] Define SPI field in DZSD macro
00620 DEFINE DZSD(NAM,SPI,TYP,MOD,KND,OFS,ZCP)<
00630 S==0
00640 IFNB <SPI>,<S==SPI>
00650 K==QSIMPLE
00660 IFNB <KND>,<K==KND>
00670 M==QDECLARED
00680 IFNB <MOD>,<M==MOD>
00690 N==0
00700 IRPC NAM,<N==N+1>
00710 IFG <N-^D12>,<PRINTX NAM too long>
00720 Q==0
00730 IFG <N-6>,<Q==1B0>
00740 Q==Q+<S>B<%ZSDSPI>+<TYP>B<%ZSDTYP>+<M>B<%ZSDMOD>+<K>B<%ZSDKND>+OFS
00750 EXP Q
00760 SIXBIT/NAM/
00770 IFE <TYP-QREF>,<
00780 IFB <ZCP>,<PRINTX REF quantity should have qualif>
00790 Z ZCP
00800 >>
00810 DEFINE SYSCLASS<
00820 X<CLPB,SUSI,SSLG,SUPS,IOFI>>
00830 DEFINE X(A)<..N==0
00840 IRP A,<Q'A==..N
00850 ..N==..N+1>>
00860 SYSCLASS
00870
00880 ;;=== RTS standard prototype definitions ===;;
00890
00900
00910 DCLASS(SSST,,,1,0,ZBI%S,3+.SIMVL-1,0,.SIMLV,,,1) ;=== SIMSET ===;
00920
00930 DCLASS(SSLG,,QSSLG,0,0,ZLG%S,3+.SIMVL,.SIMLV,<.SIMLV-1>) ;=== LINKAGE ===;
00940
00950 DCLASS(SSHD,SSLG,QSSLG,0,1,ZLG%S,3+.SIMVL,.SIMLV,<.SIMLV-1>) ;=== HEAD ===;
00960
00970 DCLASS(SSLK,SSLG,QSSLG,0,1,ZLG%S,3+.SIMVL,.SIMLV,<.SIMLV-1>) ;=== LINK ===;
00980
00990 DCLASS(SUSI,SSST,QSUSI,1,1,ZSU%S,3+.SIMVL-1,0,.SIMLV,,,1) ;=== SIMULATION ===;
01000
01010 DCLASS(SUPS,SSLK,QSUPS,0,2,ZPS%S,3+.SIMVL,.SIMLV,<.SIMLV-1>) ;=== PROCESS ===;
01020
01030 DCLASS(SUMA,SUPS,QSUPS,0,3,ZPS%S,3+.SIMVL,.SIMLV,<.SIMLV-1>) ;=== MAIN PROGRAM =;
01040
01050 ;--- ZFP for text parameter ---
01060 PTX==<QTEXT>B<%ZTDTYP>+<QSIMPLE>B<%ZPDKND>+<QVALUE>B<%ZFPMOD>
01070 PTX==PTX+OFFSET(ZFISPC)
01080
01090 DCLASS(IOFI,,QIOFI,1,,QFILNG,QFIDLE,-2,QFIEBL,1,<PTX>,,1) ;=== FILE ===;
01100
01110 DCLASS(IOIN,IOFI,QIOFI,1,1,QIFLNG,QFIDLE,-2,QFIEBL,,Z,,1) ;=== INFILE ===;
01120
01130 DCLASS(IOOU,IOFI,QIOFI,1,1,QOFLNG,QFIDLE,-2,QFIEBL,,Z,,1) ;=== OUTFILE ===;
01140
01150 DCLASS(IOPF,IOOU,QIOFI,1,2,QPFLNG,QFIDLE,-2,QFIEBL,,Z,,1) ;=== PRINTFILE ===;
01160
01170 DCLASS(IODF,IOFI,QIOFI,1,1,QDFLNG,QFIDLE,-2,QFIEBL,,Z,,1) ;=== DIRECTFILE ===;
00010 SUBTTL GLOBAL VARIABLES
00020
00030 DEFINE STATIC(A,N)<
00040 A= Q
00050 IFB <N>,<Q==Q+1>
00060 IFNB <N>,<Q==<N>+Q>>
00070
00080 Q==0
00090
00100 ;Static low segment area definition
00110 ;----------------------------------
00120 STATIC(YACSAV,20);[242] Accumulator save area for .OCSW
00130 STATIC(YOCGS) ; Address of GETSEG routine
00140 STATIC(YEDOFL) ; Number of edit overflows (accumulated)
00150 STATIC(YIOLP) ; Linesperpage (default)
00160 STATIC(YIOSAV) ; Save a value-type quantity here over storage allocation
00170 STATIC(YJOBNO) ; Job number
00180 STATIC(YDAYTM) ;Time of day at program start
00190 STATIC(YRUNTM) ;Accumulated run time at prog start
00200
00210 ;Variables used by SU (Simulation)
00220 QLARGE=377777777777
00230 STATIC(YSUNE) ;Address of NEXTEV routine
00240 STATIC(YSULEV) ;Instruction to load SIMULATION block level to XSAC.
00250 STATIC(YZERNO) ;Number of ZER records to be allocated initially.
00260 STATIC(YZERLG) ;Number of words in a ZER record.
00270
00280 STATIC(YBATCH)
00290 DSW SBATCH,YBATCH,36 ;On for a batch job
00300
00310 ;SIMDDT area (not relocated by gc)
00320 ;---------------------------------
00330 STATIC(YDSBCOM)
00340 STATIC(YDSBSAV)
00350 STATIC(YDSINC,4)
00360 STATIC(YDSWIT)
00370 DSW(YDSACT,YDSWIT,0) ;SIMDDT active
00380 STATIC(YDSEAD)
00390 STATIC(YDSENR)
00400 STATIC(YDSZLA)
00410 STATIC(YDSZLN)
00420 STATIC(YDSNOG)
00430 DSW SWNOGC,YDSNOG,36 ;On if garbage collection not allowed
00440 STATIC(YDSLOAD) ;Address of DSLOAD routine
00450 STATIC(YDSCAD) ;Approx. user address at ^C - .REENTER
00460 STATIC(YOCOBLK,3) ;Open block for loading SIMDDT
00470
00480 ;Make sure YSYSIN is at offset 61 OCTAL
00490 QOBJAD==4 ;Number of words for YOBJAD
00500 Q..==61-QOBJAD
00510 ;-- Note! we have some slack here if q. gt 0, otherwise move some declarations
00520 Q.==Q..-Q
00530 IFL Q.,<PRINTX Incorrect offset for YSYSIN>
00540 IFG Q.,<Q==Q..>
00550 PURGE Q.,Q..
00560
00570 ;--- Object pointers collected here ---
00580 ;--------------------------------------
00590 STATIC(YOBJAD,QOBJAD) ; Used by some RTS routines to save object addresses
00600 ; prior to calling garbage collector.
00610 ; The area is zero when not in use
00620 QNGP=Q
00630 STATIC(YSYSIN) ; REF(Infile) - points to standard sysin file obj
00640 STATIC(YSYSOU) ; REF(Printfile) - points to standard sysout file obj
00650 STATIC(YCSZAC) ; Address of newly created acs - set to zero
00660 ; when it has been copied to a display record.
00670 ; SIMDDT save area to be relocated by gc
00680 ; --------------------------------------
00690 STATIC(YDSIAC)
00700 STATIC(YDSCFO) ;Current file object
00710 STATIC(YDSDFO) ;Display file object
00720 STATIC(YDSSXCB) ;DS[2] save area for current pointer
00730 STATIC(YDSRXCB) ;DS[2] save area for reset of current pointer
00740 STATIC(YDSIFO) ;[41] SIMDDT input file object
00750 STATIC(YDSBA1,1) ;[242] Saves possible SIMDDT base from (re)START of prog
00760 STATIC(YDSDUM,2) ;[41]
00770 STATIC(YDPATH) ;[244] Zero or pointer to default path block (NOTE not SIMDDT)
00780 STATIC(YDSBAS)
00790
00800 STATIC(YDSTXT)
00810 STATIC(YDSREF)
00820 STATIC(YDSUFO) ;USE file object
00830 STATIC(YDSIOT) ;Text object used by SIMDDT internally
00840 STATIC(YDSXCB) ;Save XCB over USE command in SIMDDT
00850
00860 STATIC(YOCXCB) ;Saved main block address for SIMDDT and SAGC
00870
00880 STATIC(YSUPCP) ;Saves process address over possible garbage collection
00890 STATIC(YSUSCP) ; --- " ---
00900 STATIC(YSUPFT) ; --- " ---
00910 STATIC(YSUPAC) ; --- " ---
00920
00930 QNGP=Q-QNGP ;Number of standard global pointers
00940 STATIC(YIOBUF) ;Address to start of iobufs/end of iospec
00950 STATIC(YIOCHT,20);Channel table
00960 STATIC(YIOSPC) ;Start address of iospec table
00970 STATIC(YIOZFS) ;Pointer to iospec entry during file object generation
00980 STATIC(YTTIB) ;Address to tty input buffer
00990 STATIC(YTTOB) ;Address to tty output buffer
01000
01010 ;--- Variables used in SA to handle the storage pool ---
01020 ;-------------------------------------------------------
01030 ;;;;;;;
01040 STATIC(YSASTA,0) ;Start of gcp.tmp dump record area
01050 ;;;;;;;
01060 STATIC(YSATIM) ;Tim fixed runtime in millisec. updated at start of program
01070 ; before and after garbage collection
01080 STATIC(YSAGCT) ; " Accumulated runtime for garbage collections
01090 STATIC(YSAGCN) ; " Number of garbage collections
01100 STATIC(YSADEA) ;Deallocation pointer
01110 STATIC(YSATAU) ;TAU Float time between garbage collections
01120 STATIC(YSAFES) ;F^ " estimate of active memory
01130 STATIC(YSAFLA) ;FLAST " Last Ff^
01140 STATIC(YSARES) ;R^ " estimate of allocation rate
01150 STATIC(YSABES) ;B^ " estimate of garbage collection cost
01160 STATIC(YSAR) ;R " allocation rate
01170 STATIC(YSAA) ;A " accounting dependent parameter
01180 STATIC(YSAL) ;L fixed storage pool area
01190 STATIC(YSABOT) ; Start of storage pool.
01200 STATIC(YSATOP) ; First free location of storage pool.
01210 STATIC(YSALIM) ; Upper limit of storage pool.
01220 ; Space will however be reserved for a maximal acs object
01230 ; over and above that limit.
01240 ;;;;;;;
01250 STATIC(YSAEND,0) ;End of gcp.tmp dump record area
01260 ;[273] Rename cells for virtual core handling
01270 STATIC(YSANWA)
01280 ;STATIC(YSABH) ; Gcp.tmp buffer header address
01290 STATIC(YSASW) ; Switch word with sagcpe (on if gcp.tmp error)
01300 ;[273]
01310 STATIC(YSANWB)
01320 ;STATIC(YSAIMP) ;LOCAL IMAGE POINTER FOR DUMP ON SYSOUT
01330 ;[273]
01340 STATIC(YSAFRZ) ;Do not relocate below address in this cell
01350 ;STATIC(YSAILC) ;ZTVLNG,,ZTVCP for local image
01360 ;[273]
01370 STATIC(YSANWC)
01380 ;STATIC(YSAIBP) ;Local image byte pointer
01390 STATIC(YSAZSU) ;Start of chain of SIMULATION blocks used
01400 ; in garbage collector
01410 ;;;;;;;
01420 STATIC(YSANIN) ; A value of -1 specifies no initialisation of a newly
01430 ; allocated object. Any other value specifies that
01440 ; all allocated data words shall have this initial value
01450 STATIC(YSAREL) ;If the storage pool must be moved, this is the
01460 ;quantity to be added to YSABOT.
01470 STATIC(YSASAV,20);Save area for garbage collector
01480 STATIC(YUUOAC,20);Save area for UUO handler.
01490 ;Data areas for OCIN:
01500 STATIC(YOCSW,QSWNO) ;Switch area
01510 STATIC(YOCRET) ;Return address to user program
01520 STATIC(YOCSIN) ;Address to iospec entry for sysin
01530 STATIC(YOCSOU) ;" " " sysout
01540 STATIC(YOCBF1) ;Save area for buffer pointer during reading of indirect file
01550 STATIC(YOCBF2) ;Save area for buffer pointer during reading of help file
01560 STATIC(YOCBFN) ;Argument of global buffers switch if less 32
01570 STATIC(YOCBFS) ;Argument of global buffers switch if not less 32
01580 STATIC(YOCBST) ;Start adress of first i/o buffer
01590 STATIC(YOCFD,7) ;Static ZFD record
01600 STATIC(YOCFIL) ;Argument for global switch files
01610 STATIC(YOCBUF,24);File specification buffer
01620 STATIC(YOCBUE) ;Last word of buffer
01630 STATIC(YOCINF) ;Indirect file name
01640 STATIC(YOCPNT) ;Pointer to YOCBUF
01650
01660 ;Variables used by TX
01670 STATIC(YTXBN) ; Count of characters
01680 STATIC(YTXBPE) ;Buffer pointer
01690 STATIC(YTXBP) ; Buffer pointer
01700 STATIC(YTXSGN) ; Sign information
01710 STATIC(YTXTP) ; Buffer pointer
01720 STATIC(YTXEXP) ; Used to save exponent in text editing
01730 STATIC(YTXLT) ; Default "lowered ten" value in run time floating
01740 ; point fields. May be changed by TXLT.
01750 ; Used by the editing procedures
01760 STATIC(YXACAD) ; Address of extended accumulators
01770 STATIC(YFOXCB) ; XCB saved here over call to FORTRAN subroutine
01780
01790 STATIC(YTXDUM,3) ;Slack
01800 STATIC(YOCUFL) ;[62] Count of underflows
01810
01820 STATIC(YDSCSW,1) ;Switch controlling ^C - REENTER:
01830 ; Negative: Cannot stop here
01840 ; Zero: May stop here
01850 ; Positive: Wait until return to object code
01860
01870 YTXB=YOCBUF ; LOCAL BUFFER IN TEXT HANDLING
01880 STATIC(YTXZTV,2); Global text variable used as dummy argument in text
01890 ; and as save area for the text variable to be copied in TXCY
01900
01910 ;---- Pushdown stack ----- should be last. ---;
01920 ;---------------------------------------------;
01930 STATIC(YPDL,5) ;Space for a few error entries
01940 STATIC(YOBJRT,QPDLEN) ; Actual push down stack - return address to SIMULA
01950 ; code will always be at this position
01960 QPDEXT= 5 ;Number of additional cells in pdl - used on pdl ofl
01970 STATIC(YPDEXT,QPDEXT) ;Pdl extension
01980
01990 STATIC(YDUMMY,0) ;Extra cells start here
02000 ;====== N O T E !!!!!!!!! ========;
02010 ;=== Put new entries here to minimize recompilations. Reorder later ===;
02020 STATIC(YIOSIZ) ;Size switch arg if given in NEW
02030 STATIC(YSASTE) ;Core allocation step length
02040 STATIC(YSAHSZ) ;(Max) size of high segment
02050 STATIC(YHEPPN) ;Standard ppn for help files, e g SIMRTS.HLP
02060 STATIC(YDEPPN) ;Standard ppn for SIMDDT
02070 STATIC(YRTPPN) ;Standard ppn for RTS
02080 STATIC(YRTHGH) ;Hiseg name (initial)
02090 STATIC(YOCGSB,0);GETSEG block for hiseg
02100 STATIC(YOCDEV) ;Hiseg device
02110 STATIC(YOCHNM) ;Hiseg name
02120 STATIC(YZERO,2) ;Fill
02130 STATIC(YOCPPN) ;ppn for GETSEG
02140 STATIC(YZERO,1) ;Fill
02150
02160 STATIC(YOCREN) ;Saves .JBREN over OCGS
02170 STATIC(YDSL35) ;Switch set by inimage if first word is a
02180 ;line number
02190 ;Used by SIMDDT
02200 DSW SWLB35,YDSL35,36
02210
02220 STATIC(YDSIGS) ;Save area for break character pointer
02230 ;Set by inimage and used by SIMDDT
02240 STATIC(YDSIAR) ;[41] New integer arg to continue after error
02250 STATIC(YDSCLOSE) ;[41] Switch used by OCEP and SIMDDT to control closing of files
02260 DSW (SDSCLO,YDSCLOSE,36) ;[41]
02270 STATIC(YDSCRA) ;[41] switch used by SIMDDT and OCSP0
02280 DSW (YDSSUP,YDSCRA,36) ;[41]
02290 STATIC(YOCTXT,8) ;[225] Space for directory name or other string
02300
02310 ..N==40-Q+YDUMMY
02320 IFL <..N>,<CFAIL RPA static area exhausted>
02330 STATIC(YDUM1,<..N>)
02340 STATIC(YLOW) ; Start of dynamic core area
02350 YCSWK1=YTXBN ;Work area for CS module
02360 YCSWK2=YCSWK1+1
02370 YCSWK3=YCSWK2+1
02380
02390 ; ZFD record (SFD information)
02400 DF ZFDDEV,YOCFD,36,35
02410 DF ZFDFIL,YOCFD+1,36,35
02420 DF ZFDEXT,YOCFD+2,18,17
02430 DF ZFDPT,YOCFD+3,9,8
02440 DF ZFDPRJ,YOCFD+4,18,17
02450 DF ZFDPRG,YOCFD+4,18,35
02460 DF ZFDPNT,YOCFD+5,36,35
02470 DF ZFDSFD,YOCFD+6,36,35
02480
02490 END