; 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