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

⟦a5d79131b⟧ Bits:30001090 RCSL-43-GL-10381 MCPAR.00 Source code, TextFile

    Length: 7009 (0x1b61)
    Description: Bits:30001090 RCSL-43-GL-10381 MCPAR.00 Source code
    Types: TextFile
    Notes: RCSL-43-GL-10380, RCSL-43-GL-10381

TextFile

 
 ;                               RCSL:   43-GL10381
 ;                               AUTHOR: JHA
 ;                               EDITED: 80.06.27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ;               MCPAR.00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ; KEYWORDS:     RC3600,ASSEMBLER,DEFINITIONS,LISTING
 
 ; ABSTRACT:     THIS FILE CONTAINS A NUMBER OF
 ;               UTILITY MACRO DEFINITION STRINGS
 
 ; RCSL: 43-GL10380: ASCII SOURCE TAPE
 

 
         .TITLE  MCPAR
 
 
 ; THE MACROS DEFINED IN THIS FILE ARE:
 
 ; M.ZON         PRODUCES A ZONE WITH A SPECIFIED
 ;               NUMBER OF SHARES AND BUFFERS
 
 ; M.OR          PRODUCES THREE INSTRUCTIONS TO
 ;               SIMULATE AN 'OR' INSTRUCTION
 
 ; M.PCD         PRODUCES A STANDARD PROCESS
 ;               DESCRIPTOR
 
 ; M.MBF         PRODUCES A NUMBER OF MESSAGE BUFFERS
 
 

 
 ; M.ZON NAME,KIND,BUFS,SHAREL,FORM,GIVEUP(,MASK(,CONV(,RECLGT)))
 
 ; A CALL OF THIS MACRO WILL PRODUCE A ZONE WITH
 ; A NUMBER OF SHARES AND BUFFERS.
 
 ; PARAMETERS:
 
 ; NAME:         ZONE NAME. MUST BE EXACT FIVE BYTES LONG.
 
 ; KIND:         ZONE KIND.
 
 ; BUFS:         NUMBER OF SHARES AND DATA BUFFERS.
 
 ; SHAREL:       NUMBER OF BYTES IN EACH DATA BUFFER.
 ;               MUST BE AN EVEN NUMBER.
 
 ; FORM:         RECORD FORMAT (U,UB,F,FB,V OR VB).
 
 ; GIVEUP:       ADDRESS OF GIVEUP PROCEDURE.
 
 ; MASK:         GIVEUP MASK. DEFAULT 8'177777 (SEE BELOW).
 
 ; CONV:         CONVERSION TABLE WORD ADDRESS.
 ;               DEFAULT 0 (SE BELOW).
 
 ; RECLGT:       LENGTH OF EACH RECORD.
 ;               DEFAULT 0 (SEE BELOW)
 
 
 
 ; THE LAST, THE TWO LAST, OR THE THREE LAST PARAMETERS
 ; MAY BE OMITTED. IN THIS CASE THE DEFAULT VALUES ARE USED.
 
 ; EXAMPLE:
 
 ; .EJEC
 ; .RDX  8
 ;
 ; DISC:                         ; DISC ZONE DESCRIPTION
 ;
 ;       M.ZON DISC<0>,30.,1,512.,U,PGIVE,177776
 

 
 ; M.OR ACS,ACD
 
 ; A CALL OF THIS MACRO WILL PRODUCE THREE INSTRUCTIONS
 ; TO SIMULATE AN 'OR' INSTRUCTION.
 ; NOTE: THE SOURCE ACCUMULATOR IS DESTROYED!!
 
 ; PARAMETERS:
 
 ; ACS:          SOURCE ACCUMULATOR.
 
 ; ACD:          DESTINATION ACCUMULATOR.
 
 
 
 ; EXAMPLE:
 
 ;       M.OR    0,3             ; AC3 := AC0 OR AC3
 

 
 ; M.PCD NAME,BUFFER,PROGRAM,PRIOR,BREAK,START
 
 ; A CALL OF THIS MACRO WILL PRODUCE A PROCESS DESCRIPTOR
 ; WITH ALL FIELDS DEFINED. NO OPTIONAL WORDS ARE INCLUDED.
 
 ; PARAMETERS:
 
 ; NAME:         PROCESS NAME. MUST BE EXACT FIVE BYTES LONG.
 
 ; BUFFER:       ADDRESS OF MESSAGE BUFFER CHAIN HEAD.
 
 ; PROGRAM:      ADDRESS OF PROGRAM DESCRIPTOR.
 
 ; PRIOR:        PRIORITY OF THE PROCESS.
 
 ; BREAK:        PROGRAM BREAK ADDRESS.
 
 ; START:        PROGRAM START ADDRESS.
 
 
 
 ; EXAMPLE:
 
 ; .EJEC
 ; PCD:                  ; PROCESS DESCRIPTOR
 ;
 ;       M.PCD MAIN<0>,MBF,PGD,1B7,PBREA,PSTAR
 

 
 ; M.MBF PROCESS,NUMBER
 
 ; A CALL OF THIS MACRO WILL PRODUCE A NUMBER OF
 ; MESSAGE BUFFERS.
 
 ; PARAMETERS:
 
 ; PROCESS:      ADDRESS OF PROCESS DESCRIPTOR
 
 ; NUMBER:       NUMBER OF MESSAGE BUFFERS.
 
 
 
 ; EXAMPLE:
 
 ; .EJEC
 ; MBF:                  ; MESSAGE BUFFERS
 ;
 ;       M.MBF PCD,10.
 

 
 
 
 .MACRO  M.ZON
 .PUSH   .NOLOC
 .NOLOC  1
 
 .IFE    ^3
 *** ; ILLEGAL NO OF BUFFERS ; ***
 .GOTO   FIN
 .ENDC
 
 .PUSH   .TXTM
 .TXTM   1
 .PUSH   .TXTN
 .TXTN   0
 .PUSH   .RDX
 .RDX    8
 
 .IFL    .ARGCT-9.
 .PUSH   0
 .ENDC   ENDE
 .PUSH   ^9
 ÆENDEÅ
 
 

 
 .DO     '^5'=='U'
 .PUSH   0
 .GOTO   NEXT
 .ENDC
 
 .DO     '^5'=='UB'
 .PUSH   1
 .GOTO   NEXT
 .ENDC
 
 .DO     '^5'=='F'
 .PUSH   2
 .GOTO   NEXT
 .ENDC
 
 .DO     '^5'=='FB'
 .PUSH   3
 .GOTO   NEXT
 .ENDC
 
 .DO     '^5'=='V'
 .PUSH   4
 .GOTO   NEXT
 .ENDC
 
 .DO     '^5'=='VB'
 .PUSH   5
 .GOTO   NEXT
 .ENDC
 
 *** ; ILLEGAL RECORD FORMAT ; ***
 .GOTO   FIN
 
 ÆNEXTÅ
 
 .IFL    .ARGCT-8.
 .PUSH   0
 .ENDC   ENDE
 .PUSH   ^8
 ÆENDEÅ
 
 .IFL    .ARGCT-7.
 .PUSH   177777
 .ENDC   ENDE
 .PUSH   ^7
 ÆENDEÅ
 

 
 .PUSH   .
 .TXT    '^1'                    ; ZNAME
 .IFN    .-.POP-3
 *** ; ILLEGAL NAME LENGTH ; ***
 .ENDC
         Z                       ; SIZE
         0                       ; ZMODE
         ^2                      ; ZKIND
         .POP                    ; ZMASK
         ^6                      ; ZGIVE
         1                       ; ZFILE
         1                       ; ZBLOCK
         .POP*2                  ; ZCONV
         .+Z-ZBUFF               ; ZBUFF
         ^4/2+SSIZE              ; ZSIZE
         .POP                    ; ZFORM
         .POP                    ; ZLENGTH
         .+Z+SSIZE-ZFIRS*2       ; ZFIRST
         .+Z+SSIZE-ZTOP*2        ; ZTOP
         .+Z-ZUSED               ; ZUSED
         ^4                      ; ZSHAREL
         0                       ; ZREM
 .BLK    ZAUX                    ; Z0
 
 .PUSH   .
 .PUSH   1
 .DO     ^3
 .NOLOC  0
 
 .NOLOC  1
         0                       ; SOPER
         0                       ; SCOUNT
         0                       ; SADDR
         0                       ; SSPEC
 .IFN    ^3-.TOP
         .+SSIZE+(^4/2)-SNEXT    ; SNEXT
 .ENDC   ENDE
 .NOLOC  .POP                    ; DUMMY
         .POP                    ; SNEXT
 .PUSH   ^3-1
 ÆENDEÅ
         0                       ; SSTAT
         .+1*2                   ; SFIRS
 .BLK    ^4/2                    ; BUFFER
 .PUSH   .POP+1
 .ENDC
 .NOLOC  .POP                    ; DUMMY
 .RDX    .POP
 .TXTN   .POP
 .TXTM   .POP
 ÆFINÅ
 .NOLOC  .POP
 %
 

 
 .MACRO  M.OR
         COM     ^1,^1
         AND     ^1,^2
         ADC     ^1,^2
 %
 

 
 .MACRO  M.PCD
 .PUSH   .NOLOC
 .NOLOC  1
 
 .PUSH   .TXTM
 .TXTM   1
 .PUSH   .TXTN
 .TXTN   0
 
 
         .+0             ; NEXT
         .-1             ; PREV
         0               ; CHAIN
         0               ; CARRY
 .PUSH   .
 .TXT    '^1'            ; NAME
 .IFN    .-.POP-3
 *** ; ILLEGAL NAME LENGTH ; ***
 .ENDC
         .+0             ; EVENT
         .-1             ; EVENT
         ^2              ; BUFFER
         ^3              ; PROGRAM
         1B0             ; STATE
         0               ; TIMER
         ^4              ; PRIORITY
         ^5              ; BREAK
         0               ; AC0
         0               ; AC1
         .-AC2           ; AC2
         0               ; AC3
         ^6*2            ; PSW
         0               ; SAVE
 
 .TXTN   .POP
 .TXTM   .POP
 .NOLOC  .POP
 %
 

 
 .MACRO M.MBF
 .PUSH   .NOLOC
 
 
                         ; MESSAGE BUFFERS
 
 .NOLOC  1
 .PUSH   .RDX
 .RDX    10
 .PUSH   1
 .DO     ^2
 .IFE    .TOP-(.TOP/4*4)-1
 .IFN    .TOP-1
 .EJEC
 .ENDC
 .ENDC
 .NOLOC  0
 
 .NOLOC  1
         .+0             ; NEXT
         .-1             ; PREV
         .+BSIZE-CHAIN   ; CHAIN
         BSIZE           ; SIZE
         ^1              ; SENDER
         0               ; RECEIVER
         0               ; MESS0
         0               ; MESS1
         0               ; MESS2
         0               ; MESS3
 .PUSH   .POP+1
 .ENDC
 .NOLOC  .POP
 .RDX    .POP
 .NOLOC  .POP
 %
 .EOT