DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦df87d7a87⟧ Bits:30001088 RCSL-43-GL-9000 MUPAR.02 Source code, TextFile

    Length: 14779 (0x39bb)
    Description: Bits:30001088 RCSL-43-GL-9000 MUPAR.02 Source code
    Types: TextFile
    Notes: RCSL-43-GL-8999, RCSL-43-GL-9000

TextFile

 
 ;                                               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