; RCSL : 43-GL9000 ; AUTHER: MLM ; EDITED: 79.05.23 ; MUPAR.02 ;KEYWORDS: RC3600, MONITOR, USER SYMBOLS. ;ABSTRACT: RC3600 MONITOR USER SYMBOL DEFINITIONS. ; ASCII PAPER TAPE: RCSL:43-GL8999 .TITL MUPAR .RDX 10 ; ****** FORMAT DEFINITIONS ****** ; ITEM: .DUSR NEXT= 0 ; NEXT ITEM IN A QUEUE OF ITEMS .DUSR PREV= NEXT+1 ; PREVIOUS ITEM IN A QUEUE OF ITEMS .DUSR CHAIN=PREV+1 ; NEXT ITEM IN A CHAIN OF ITEMS .DUSR SIZE= CHAIN+1 ; SIZE OF THE ITEM .DUSR NAME= SIZE+1 ; NAME OF THE ITEM (THREE WORDS) ; PROCESS DESCRIPTOR: ; NEXT ; 0 NEXT PROCESS IN A QUEUE OF PROCESSES ; PREV ; 1 PREVIOUS PROCESS IN A QUEUE OF PROCESSES ; CHAIN ; 2 NEXT PROCESS IN THE PROCESS CHAIN ; SIZE ; 3 SIZE OF THE PROCESS DESCRIPTOR ; NAME ; 4 NAME OF THE PROCESS (THREE WORDS) .DUSR EVENT=NAME+3 ; 7 EVENT QUEUE HEAD (TWO WORDS) .DUSR BUFFE=EVENT+2 ; 9 FREE MESSAGE BUFFER CHAIN HEAD .DUSR PROG= BUFFE+1 ; 10 PROGRAM ADDRESS .DUSR STATE=PROG+1 ; 11 STATE OF PROCESS .DUSR TIMER=STATE+1 ; 12 TIMER COUNT .DUSR PRIOR=TIMER+1 ; 13 PRIORITY .DUSR BREAD=PRIOR+1 ; 14 BREAK ADDRESS .DUSR AC0= BREAD+1 ; 15 SAVED AC0 .DUSR AC1= AC0+1 ; 16 SAVED AC1 .DUSR AC2= AC1+1 ; 17 SAVED AC2 .DUSR AC3= AC2+1 ; 18 SAVED AC3 .DUSR PSW= AC3+1 ; 19 PSW (PROCESS STATUS WORD) .DUSR SAVE= PSW+1 ; 20 SAVED LINK .DUSR O= SAVE+1 ; 21 OPTIONAL WORDS: ; INTERPRETER PROCESSES .DUSR SAVE1=O ; WORK LOC. .DUSR SAVE2=SAVE1+1 ; - .DUSR SAVE3=SAVE2+1 ; - .DUSR SAVE4=SAVE3+1 ; - .DUSR SAVE5=SAVE4+1 ; - .DUSR R= SAVE5+1 ; PSEUDO ACCUMOLATOR .DUSR PC= R+1 ; PSEUDO PC .DUSR OP= PC+1 ; OPERATOR MESSAGE .DUSR .OPER=OP+1 ; OPERATOR NAME ADDRESS .DUSR ZN=.OPER+4 ; FIRST FILE DESCR. ENTRY ADDRESS ; DRIVER PROCESSES .DUSR BUF= O ; 21 SAVED MESSAGE BUFFER ADDRESS .DUSR ADDRE=BUF+1 ; 22 CURRENT VALUE OF ADDRESS .DUSR COUNT=ADDRE+1 ; 23 CURRENT VALUE OF COUNT .DUSR RESER=COUNT+1 ; 24 RESERVER .DUSR CONVT=RESER+1 ; 25 CONVERSION TABLE ADDRESS .DUSR CLINT=CONVT+1 ; 26 CLEAR DEVICE INTERRUPT ; COROUTINE PROCESSES .DUSR CCOROUT=ZN ; CURRENT COROUTINE .DUSR LATIME=CCORO+1 ; LATEST ACTIVATION TIME .DUSR HACTIVE=LATIM+1 ; HEAD OF ACTIVE QUEUE .DUSR HANSWER=HACTI+1 ; HEAD OF ANSWER QUEUE .DUSR HDELAY=HANSW+1 ; HEAD OF DELAY QUEUE .DUSR TRETURN=HDELA+1 ; RETURN FROM TEST .DUSR TRECORD=TRETU+1 ; TEST RECORD START .DUSR CDEVICE= TRECO+1; DEVICE NUMBER .DUSR MSEM=CDEVIC+1 ; MESSAGE SEM .DUSR MCOROUT=MSEM+1 ; MESSAGE COROUTINE .DUSR CUDEX=MCOROUT+1 ; USER DEFINED EXIT .DUSR CBUFFER=CUDEX+1 ; COROUTINE BUFFER ; MESSAGE BUFFER: ; NEXT ; NEXT BUFFER IN A QUEUE OF BUFFERS ; PREV ; PREVIOUS BUFFER IN A QUEUE OF BUFFERS ; CHAIN ; NEXT BUFFER IN A CHAIN OF BUFFERS ; SIZE ; SIZE OF THE MESSAGE BUFFER .DUSR SENDE=SIZE+1 ; SENDER PROCESS DESCRIPTOR .DUSR RECEI=SENDE+1 ; RECEIVER PARAMETER .DUSR MESS0=RECEI+1 ; 0.MESSAGE .DUSR MESS1=MESS0+1 ; 1.MESSAGE .DUSR MESS2=MESS1+1 ; 2.MESSAGE .DUSR MESS3=MESS2+1 ; 3.MESSAGE .DUSR BSIZE=MESS3+1 ; SIZE OF MESSAGE BUFFER ; PROGRAM DESCRIPTOR: .DUSR PSPEC=0 ; SPECIFICATION OF PROGRAM: ; B0: OWN ; B1: REENTRANT ; B2: PAGE ZERO USER ; B3: RESERVABLE ; B(8:15) PROCESS COUNT .DUSR PSTAR=PSPEC+1 ; START ADDRESS ; CHAIN ; NEXT PROGRAM IN A CHAIN OF PROGRAMS ; SIZE ; SIZE OF THE PROGRAM AREA ; NAME ; NAME OF THE PROGRAM (THREE WORDS) ; ; COROUTINE DESCRIPTOR: .DUSR CIDENT=NEXT-1 ; IDENTIFICATION .DUSR OPMASK=CIDENT-1 ; WAIT MASK ; NEXT ; LINK TO NEXT COROUTINE .DUSR CEXIT=NEXT+1 ; SAVED EXIT ADDRESS .DUSR CLATOP=CEXIT+1 ; SAVED OPERATION .DUSR CRETUR=CLATO+1 ; SAVED RETURN .DUSR CAC1S=CRETU+1 ; SAVED AC1 .DUSR TLENGTH=30 ; LENGTH OF TEST RECORD ; ZONE DESCRIPTOR: .DUSR ZNAME=0 ; NAME (THREE WORDS) ; SIZE ; SIZE OF THE ZONE DESCRIPTOR .DUSR ZMODE=SIZE+1 ; MODE OF OPERATION .DUSR ZKIND=ZMODE+1 ; KIND OF DOCUMENT .DUSR ZMASK=ZKIND+1 ; MASK FOR GIVE UP .DUSR ZGIVE=ZMASK+1 ; GIVE UP ADDRESS .DUSR ZFILE=ZGIVE+1 ; FILE COUNT .DUSR ZBLOC=ZFILE+1 ; BLOCK COUNT .DUSR ZCONV=ZBLOC+1 ; CONVERSION TABLE ADDRESS .DUSR ZBUFF=ZCONV+1 ; BUFFER ADDRESS .DUSR ZSIZE=ZBUFF+1 ; SIZE OF BUFFER .DUSR ZFORM=ZSIZE+1 ; FORMAT OF RECORD .DUSR ZLENG=ZFORM+1 ; LENGTH OF RECORD .DUSR ZFIRS=ZLENG+1 ; FIRST OF RECORD (BYTE ADDRESS) .DUSR ZTOP= ZFIRS+1 ; TOP OF RECORD (BYTE ADDRESS) .DUSR ZUSED=ZTOP+1 ; USED SHARE .DUSR ZSHAR=ZUSED+1 ; SHARE LENGTH (IN BYTES) .DUSR ZREM= ZSHAR+1 ; REMAINING BYTES IN SHARE ; AUXILLIARY WORDS: .DUSR Z0= ZREM+1 ; AUX 0 .DUSR Z1= Z0+1 ; AUX 1 .DUSR Z2= Z1+1 ; AUX 2 .DUSR Z3= Z2+1 ; AUX 3 .DUSR Z4= Z3+1 ; AUX 4 .DUSR Z5= Z4+1 ; AUX 5 .DUSR ZAUX= 6 ; NUMBER OF AUXILLIARY WORDS .DUSR Z= Z0+ZAUX ; OPTIONAL WORDS: ; SHARE DESCRIPTOR: .DUSR SOPER=0 ; OPERATION (0.MESSAGE) .DUSR SCOUN=SOPER+1 ; COUNT (1.MESSAGE) .DUSR SADDR=SCOUN+1 ; ADDRESS (2.MESSAGE) .DUSR SSPEC=SADDR+1 ; SPECIAL (3.MESSAGE) .DUSR SNEXT=SSPEC+1 ; NEXT SHARE .DUSR SSTAT=SNEXT+1 ; STATE OF SHARE .DUSR SFIRS=SSTAT+1 ; FIRST SHARED (BYTE ADDRESS) .DUSR SSIZE=SFIRS+1 ; SIZE OF SHARE DESCRIPTOR ; ****** END OF FORMAT DEFINITIONS ****** ; ****** MONITOR FUNCTION ENTRIES ****** .LOC 2 .DUSR WAIT= JSR@ . .DUSR WAITINTERRUPT= JSR@ .+1 .DUSR SENDMESSAGE= JSR@ .+2 .DUSR WAITANSWER= JSR@ .+3 .DUSR WAITEVENT= JSR@ .+4 .DUSR SENDANSWER= JSR@ .+5 .DUSR SEARCHITEM= JSR@ .+6 .DUSR CLEANPROCESS= JSR@ .+7 .DUSR BREAKPROCESS= JSR@ .+8 .DUSR STOPPROCESS= JSR@ .+9 .DUSR STARTPROCESS= JSR@ .+10 .DUSR RECHAIN= JSR@ .+11 ; ****** END OF MONITOR FUNCTION ENTRIES ****** .LOC 32 .DUSR M= . ; START OF MONITOR PROCESS DESCRIPTOR .DUSR CUR= . ; .DUSR TABLE=.+5 ; DEVICE TABLE .DUSR TOPTA=.+6 ; TOP OF DEVICE TABLE .DUSR PFIRS=.+10 ; FIRST IN PROCESS CHAIN .DUSR RUNNI=.+12 ; RUNNING QUEUE .DUSR PROCE=RUNNI ; REFERENCE TO HEAD OF RUNNING QUEUE AND .DUSR MONIT=RUNNI ; HEAD OF PROCESS CHAIN: MONITOR PROCESS. .DUSR EXIT=.+14 ; BREAD: MONITOR EXIT .DUSR EFIRS=.+15 ; FIRST IN FREE CORE .DUSR FFIRS=.+16 ; LAST IN FREE CORE .DUSR DELAY=.+17 ; DELAY QUEUE .DUSR AREAP=.+20 ; HEAD OF AREA PROCESS CHAIN .DUSR AFIRS=.+21 ; FIRST IN AREA PROCESS CHAIN ; PAGE ZERO VARIABLES: .LOC 54 .DUSR FREQU=. ; FREQUENCY OF RTC: .DUSR MASK= .+1 ; INTERRUPT MASK .DUSR CORES=.+2 ; CORE SIZE .DUSR PROGR=.+3 ; REF. TO HEAD OF PROGRAM CHAIN .DUSR RTIME= .+6 ; REAL TIME COUNT .DUSR POWIN= .+8 ; POWER INTERRUPT COUNT .DUSR CDUMP=.+9 ; CORE DUMP ENTRY .DUSR CPUTY=.+10 ; CPU TYPE: 0: 3603 ; 1: 3703 ; 2: 3803 ; 3 3703 WITH '3803-FEATURE' ; 4: 3603 WITH '3803-FEATURE' ; PAGE ZERO CONSTANTS: .LOC 65 .DUSR BIT= . ;1B0 .DUSR .1B0= . ;1B0 .DUSR .1B1= .+1 ;1B1 .DUSR .1B2= .+2 ;1B2 .DUSR .1B3= .+3 ;1B3 .DUSR .1B4= .+4 ;1B4 .DUSR .1B5= .+5 ;1B5 .DUSR .1B6= .+6 ;1B6 .DUSR .1B7= .+7 ;1B7 .DUSR .1B8= .+8 ;1B8 .DUSR .1B9= .+9 ;1B9 .DUSR .1B10= .+10 ;1B10 .DUSR .1B11= .+11 ;1B11 .DUSR .1B12= .+12 ;1B12 .DUSR .1B13= .+13 ;1B13 .DUSR .1B14= .+14 ;1B14 .DUSR .1B15= .+15 ;1B15 ; STATUS BITS: .DUSR SDISC=.1B0 ; DISCONNECTED .DUSR SOFFL=.1B1 ; OFF LINE .DUSR SBUSY=.1B2 ; BUSY .DUSR SDEV1=.1B3 ; DEVICE MODE 1 .DUSR SDEV2=.1B4 ; DEVICE MODE 2 .DUSR SDEV3=.1B5 ; DEVICE MODE 3 .DUSR SILLE=.1B6 ; ILLEGAL .DUSR SEOF= .1B7 ; EOF .DUSR SBLOC=.1B8 ; BLOCK ERROR .DUSR SDATA=.1B9 ; DATA LATE .DUSR SPARI=.1B10 ; PARITY ERROR .DUSR SEM= .1B11 ; END MEDIUM .DUSR STIME=.1B14 ; TIMER ; CONTROL BITS: .DUSR CERAS=.1B8 ; ERASURE .DUSR CDISC=.1B9 ; DISCONNECT .DUSR CPOSI=.1B10 ; POSITIONING .DUSR CTERM=.1B11 ; TERMINATION .DUSR CCONV=.1B12 ; CONVERSION .DUSR CRESE=.1B13 ; RESERVATION .LOC 81 .DUSR .0= PRIORITY+M .DUSR .1= .1B15 .DUSR .2= .1B14 .DUSR .3= . .DUSR .4= .1B13 .DUSR .5= .+1 .DUSR .6= .+2 .DUSR .7= .+3 .DUSR .8= .1B12 .DUSR .9= .+4 .DUSR .10= .+5 .DUSR .12= .+6 .DUSR .13= .+7 .DUSR .15= .+8 .DUSR .16= .1B11 .DUSR .24= .+9 .DUSR .25= .+10 .DUSR .32= .1B10 .DUSR .40= .+11 .DUSR .48= .+12 .DUSR .56= .+13 .DUSR .60= .+14 .DUSR .63= .+15 .DUSR .64= .1B9 .DUSR .120= .+16 .DUSR .127= .+17 .DUSR .128= .1B8 .DUSR .255= .+18 .DUSR .256= .1B7 .DUSR .512= .1B6 .DUSR .1024= .1B5 .DUSR .2048= .1B4 .DUSR .4096= .1B3 .DUSR .8192= .1B2 .DUSR .16384= .1B1 .DUSR .32768= .1B0 .DUSR .M3= .+19 .DUSR .M4= .+20 .DUSR .M16= .+21 .DUSR .M256= .+22 .DUSR .NAME=.4 ; NAME.PROC .DUSR .EVEN=.7 ; EVENT.PROC .DUSR .EDOC=.EVEN ; DOCUMENT.ENTRY .DUSR .MESS=.6 ; MESS.BUF .DUSR .SSIZ=.7 ; SIZE OF SHARE DESCRIPTOR .DUSR .Z= 104 ; OPTIONAL.ZONE .DUSR .RTC= .12 ; RTC DEVICE NUMBER .DUSR .NL= .10 ; .DUSR .LF= .10 ; .DUSR .CR= .13 ; .DUSR .FF= .12 ; .DUSR CUR2=.64 ; MONITOR PROCESS*2 ; REFERENCES TO REENTRANT SYSTEM UTILITY PROCEDURES: .LOC 116 .DUSR NEXTOPERATION= JSR@ . .DUSR WAITOPERATION= JSR@ .+3 .DUSR RETURNANSWER= JSR@ .+1 .DUSR SETINTERRUPT= JSR@ .+4 .DUSR SETRESERVATION= JSR@ .+5 .DUSR SETCONVERSION= JSR@ .+6 .DUSR CONBYTE= JSR@ .+7 .DUSR GETBYTE= JSR@ .+8 .DUSR PUTBYTE= JSR@ .+9 .DUSR MULTIPLY= JSR@ .+10 .DUSR DIVIDE= JSR@ .+11 .DUSR .NEXTOPERATION= JMP@ . .DUSR .RETURNANSWER= JMP@ .+1 .DUSR .CLEARDEVICE= JMP@ .+2 .DUSR CLEAR= @.+2 .DUSR .SETINTERRUPT= JMP@ .+4 .DUSR .SETRESERVATION= JMP@ .+5 .DUSR .SETCONVERSION= JMP@ .+6 .DUSR .CONBYTE= JMP@ .+7 .DUSR .GETBYTE= JMP@ .+8 .DUSR .PUTBYTE= JMP@ .+9 .DUSR .MULTIPLY= JMP@ .+10 .DUSR .DIVIDE= JMP@ .+11 .DUSR GOS= JSR@ 0 .DUSR GOT= JMP@ 0 ; REFERENCES TO REENTRANT INPUT/OUTPUT UTILITY PROCEDURES: .LOC 128 .DUSR BINDEC= JSR@ .+26 .DUSR DECBIN= JSR@ .+27 .DUSR GETREC= JSR@ . .DUSR PUTREC= JSR@ .+1 .DUSR WAITTRANSFER= JSR@ .+2 .DUSR TRANSFER= JSR@ .+4 .DUSR INBLOCK= JSR@ .+5 .DUSR OUTBLOCK= JSR@ .+6 .DUSR INCHAR= JSR@ .+7 .DUSR FREESHARE= JSR@ .+8 .DUSR OUTSPACE= JSR@ .+9 .DUSR OUTCHAR= JSR@ .+10 .DUSR OUTNL= JSR@ .+11 .DUSR OUTEND= JSR@ .+12 .DUSR OUTTEXT= JSR@ .+13 .DUSR OUTOCTAL= JSR@ .+14 .DUSR SETPOSITION= JSR@ .+15 .DUSR CLOSE= JSR@ .+16 .DUSR OPEN= JSR@ .+17 .DUSR INNAME= JSR@ .+19 .DUSR WAITZONE= JSR@ .+18 .DUSR MOVE= JSR@ .+20 .DUSR INTPRETE= JSR@ .+21 .DUSR .GETREC= JMP@ . .DUSR .PUTREC= JMP@ .+1 .DUSR .WAITTRANSFER= JMP@ .+2 .DUSR .REPEATSHARE= JMP@ .+3 .DUSR .TRANSFER= JMP@ .+4 .DUSR .INBLOCK= JMP@ .+5 .DUSR .OUTBLOCK= JMP@ .+6 .DUSR .FREESHARE= JMP@ .+8 .DUSR .INCHAR= JMP@ .+7 .DUSR .OUTSPACE= JMP@ .+9 .DUSR .OUTCHAR= JMP@ .+10 .DUSR .OUTNL= JMP@ .+11 .DUSR .OUTEND= JMP@ .+12 .DUSR .OUTTEXT = JMP@ .+13 .DUSR .OUTOCTAL= JMP@ .+14 .DUSR .SETPOSITION= JMP@ .+15 .DUSR .CLOSE= JMP@ .+16 .DUSR .OPEN= JMP@ .+17 .DUSR INTGIVEUP= .+22 .DUSR INTBREAK= .+24 .DUSR MZSTART=156 ; INTERPRETER PAGE ZERO START: .LOC 218 .DUSR NEWCAT= JSR@ . .DUSR FREECAT= JSR@ .+1 ; COROUTINE MONITOR ENTRIES ; .LOC 220 .DUSR COROU=15 ; CURRENT COROUTINE .DUSR CDELAY=JSR@ . ; DELAY(TIME) .DUSR WAITSE=JSR@ .+1 ; WAITSEM(SEMAPHORE) .DUSR WAITCH=JSR@ .+2 ; WAITCHAINED(SEMAPHORE) .DUSR CWANSW=JSR@ .+3 ; WAITANSWER(BUF) .DUSR CTEST =JSR@ .+4 ; TESTOUT REGISTERS .DUSR CPRINT=JSR@ .+5 ; TESTOUT RECORD .DUSR CTOUT =JSR@ .+6 ; TESTGENERAL .DUSR SIGNAL=JSR@ .+7 ; SIGNAL(SEMAPHORE); .DUSR SIGCH =JSR@ .+8 ; SIGNAL CHAINEDD(SEMAPHORE) .DUSR CPASS =JSR@ .+9 ; PASS ; FILE SYSTEM ENTRIES .LOC 230 .DUSR CREATEENTRY=JSR@ . ; .DUSR LOOKUPENTRY=JSR@ .+1 ; .DUSR CHANGEENTRY=JSR@ .+2 ; .DUSR REMOVEENTRY=JSR@ .+3 ; .DUSR INITCATALOG=JSR@ .+4 ; .DUSR SETENTRY= JSR@ .+5 ; ; PAGE SYSTEM ENTRIES .LOC .+6 .DUSR COMON = JSR@ . ; COROUTINE MONITOR .DUSR CALL = JSR@ .+1 .DUSR GOTO = JSR@ .+2 .DUSR GETADR = JSR@ .+3 .DUSR GETPOINT= JSR@ .+4 .DUSR PWSIZE = 12 ; NO OF WORKING LOCATIONS PR PROGRAM .DUSR PCWSIZE = 6 ; NO OF WORKING LOCATIONS PR COROUTINE ; HEAD OF CORE CHAIN .DUSR CORE = .+5 .DUSR COMLIST = .+6 ; ADDR OF PROC XCOMX ENTRYLIST .DUSR COMNO = .+7 ; NO OF ENTRYS IN COMLIST ; EXTENDED COROUTINE MONITOR ENTRIES ; ; ; .LOC 244 .DUSR CSENDM=JSR@ . ; .DUSR SIGGEN=JSR@ .+1 ; .DUSR WAITGE=JSR@ .+2 ; .DUSR CTOP =JSR@ .+3 ; .DUSR DEVTA=256-8 ; DEVICE TABLE .DUSR TOPDE=DEVTA+63-3 ; TOP OF DEVICE TABLE .END