.sbttl define command macro .iif ndf, true, true = -1 .iif ndf, false, false = 0 ; example ; ; command SEND,3,c$send,true ; ; Would define the SEND command with a minimum length of ; three characters and allow trailing options on the cmd ; line string = 0 octnum = 1 decnum = 2 .macro command list ,name , min , addres , arg , argtyp $listl == 6 .save .if b , .ift .psect cmddsp ,con,rel,d,lcl,ro .rept $listl .word 0 .endr .iff .iif ne, $cmglob,.globl addres .psect cmdtxt ,con,rel,d,lcl,ro $$name = . .asciz #name# $arg = . .if b , .ift .byte 0 .iff .asciz #arg# .endc .even .psect cmddsp ,con,rel,d,lcl,ro .if ndf ,list .ift .if ne,$cmglob .ift 'list:: .iff 'list: .endc .endc .word $$name .word min .word addres .word $arg .word argtyp .word 0 .endc .restore .endm .sbttl $name macro. Allow site checking for command names ; MACRO $NAME ; ; This is macro is intended to allow local sites to ; try to control the user access to the various ; commands. The cmd name address is passed on the ; stack (at 2(sp)) and the local site is given the ; option of checking to see if the user is allowed ; to access this command or not. If not, the ; routine called okuser should simply do a cmp ; (sp)+,(sp)+ and a return else do a mov (sp)+ ,@sp ; and return. ; The command name is .asciz and only the first 3 ; characters are stored. .macro $name nam .save .psect $pdata $nam = . .asciz #nam# .restore mov #$nam ,-(sp) call okuser global .endm $name code ; insure $code psect