UNIVER KERUNV - Universal for KERMIT-10 SUBTTL Robert C. McQueen/NB REMARK Version 1 - Antonino N. J. Mione/NB/RCM ; Universals SEARCH GLXMAC ; Parser interface definitions ; Version number KERVER==2 ; Major version number KERMIN==0 ; Minor version number KEREDT==106 ; Edit level KERWHO==0 ; Customer edit ; Prologue PROLOG (KERUNV) ; Interface to GLXMAC correctly SUBTTL Table of Contents ;+ ;.pag.lit ; Table of Contents of KERMIT ; ; ; Section Page ; 1. Table of Contents. . . . . . . . . . . . . . . . . . . . . . . . 2 ; 2. Revision History . . . . . . . . . . . . . . . . . . . . . . . . 3 ; 3. Definitions ; 3.1. Default . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ; 3.2. Operating system ; 3.2.1. TOPS-10 ; 3.2.1.1. Channels. . . . . . . . . . . . . . . . . . . . . 4 ; 3.2.1.2. Terminal info . . . . . . . . . . . . . . . . . . 5 ; 4. .FD block extensions . . . . . . . . . . . . . . . . . . . . . . 6 ; 5. LOKWLD routine calling sequence. . . . . . . . . . . . . . . . . 7 ; 6. Definitions ; 6.1. BLISS-36 interface symbols. . . . . . . . . . . . . . . . . 8 ; 6.2. Symbols ; 6.2.1. Generic functions DO_GENERIC supports. . . . . . . . . 9 ; 6.2.2. File types (byte size) . . . . . . . . . . . . . . . . 10 ; 6.3. Macro ; 6.3.1. BLSRTN - Define a BLISS called routine . . . . . . . . 11 ; 6.3.2. BLSRET - Return a value to BLISS . . . . . . . . . . . 12 ; 6.3.3. BLSCAL - Call a BLISS-36 routine . . . . . . . . . . . 13 ; 6.3.4. KERRORS - Things passed to BLISS . . . . . . . . . . . 14 ; 6.3.5. $KERR - Issue error messages . . . . . . . . . . . . . 15 ; 6.3.6. KERERR - Issue an error to the remote. . . . . . . . . 16 ; 6.3.7. Character masks. . . . . . . . . . . . . . . . . . . . 17 ; 7. End of KERUNV. . . . . . . . . . . . . . . . . . . . . . . . . . 18 ; 8. Command processing ; 8.1. Prompt strings. . . . . . . . . . . . . . . . . . . . . . . 20 ; 9. Commands tables ; 9.1. Initial state . . . . . . . . . . . . . . . . . . . . . . . 21 ; 9.2. Final state . . . . . . . . . . . . . . . . . . . . . . . . 21 ; 10. Command tables ; 10.1. BYE command. . . . . . . . . . . . . . . . . . . . . . . . 21 ; 10.2. CONNECT command. . . . . . . . . . . . . . . . . . . . . . 22 ; 10.3. EXIT command . . . . . . . . . . . . . . . . . . . . . . . 23 ; 10.4. FINISH command . . . . . . . . . . . . . . . . . . . . . . 24 ; 10.5. GET command. . . . . . . . . . . . . . . . . . . . . . . . 24 ; 10.6. HELP command . . . . . . . . . . . . . . . . . . . . . . . 24 ; 10.7. LOGOUT command . . . . . . . . . . . . . . . . . . . . . . 25 ; 10.8. RECEIVE command. . . . . . . . . . . . . . . . . . . . . . 25 ; 10.9. SEND command . . . . . . . . . . . . . . . . . . . . . . . 25 ; 10.10. SERVER command . . . . . . . . . . . . . . . . . . . . . . 26 ; 10.11. SET command ; 10.11.1. Dispatch table . . . . . . . . . . . . . . . . . . . 27 ; 10.11.2. ON/OFF table . . . . . . . . . . . . . . . . . . . . 28 ; 10.11.3. DEBUGGING. . . . . . . . . . . . . . . . . . . . . . 29 ; 10.11.4. DELAY. . . . . . . . . . . . . . . . . . . . . . . . 29 ; 10.11.5. ESCAPE . . . . . . . . . . . . . . . . . . . . . . . 29 ; 10.11.6. FILE-BYTE-SIZE . . . . . . . . . . . . . . . . . . . 30 ; 10.11.7. Line . . . . . . . . . . . . . . . . . . . . . . . . 31 ; 10.11.8. Parity . . . . . . . . . . . . . . . . . . . . . . . 32 ; 10.11.9. Receive. . . . . . . . . . . . . . . . . . . . . . . 33 ; 10.11.10. Send . . . . . . . . . . . . . . . . . . . . . . . . 34 ; 10.12. STATUS command . . . . . . . . . . . . . . . . . . . . . . 35 ; 10.13. SHOW command . . . . . . . . . . . . . . . . . . . . . . . 36 ; 11. GLXLIB interface blocks. . . . . . . . . . . . . . . . . . . . . 37 ; 12. Entry vector and initialization. . . . . . . . . . . . . . . . . 38 ; 13. Kermit initialization. . . . . . . . . . . . . . . . . . . . . . 41 ; 14. KERMIT.INI processing. . . . . . . . . . . . . . . . . . . . . . 42 ; 15. CCL entry processing ; 15.1. SETTMP . . . . . . . . . . . . . . . . . . . . . . . . . . 43 ; 15.2. ADVTMP . . . . . . . . . . . . . . . . . . . . . . . . . . 44 ; 15.3. ABRTAK . . . . . . . . . . . . . . . . . . . . . . . . . . 45 ; 16. Command parsing utility routines ; 16.1. CHKCTL . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ; 17. Command execution ; 17.1. CONNECT command. . . . . . . . . . . . . . . . . . . . . . 47 ; 17.2. EXIT command . . . . . . . . . . . . . . . . . . . . . . . 48 ; 17.3. BYE command. . . . . . . . . . . . . . . . . . . . . . . . 49 ; 17.4. FINISH command . . . . . . . . . . . . . . . . . . . . . . 50 ; 17.5. LOGOUT command . . . . . . . . . . . . . . . . . . . . . . 51 ; 17.6. HELP command . . . . . . . . . . . . . . . . . . . . . . . 52 ; 17.7. PROMPT command . . . . . . . . . . . . . . . . . . . . . . 53 ; 17.8. SEND command . . . . . . . . . . . . . . . . . . . . . . . 54 ; 17.9. GET command. . . . . . . . . . . . . . . . . . . . . . . . 55 ; 17.10. RECEIVE command. . . . . . . . . . . . . . . . . . . . . . 56 ; 17.11. SERVER command . . . . . . . . . . . . . . . . . . . . . . 57 ; 17.12. SET command. . . . . . . . . . . . . . . . . . . . . . . . 58 ; 17.13. SHOW command . . . . . . . . . . . . . . . . . . . . . . . 62 ; 17.14. STATUS command . . . . . . . . . . . . . . . . . . . . . . 63 ; 18. File processing ; 18.1. INIFILE - Initialization . . . . . . . . . . . . . . . . . 64 ; 18.2. FILE%OPEN. . . . . . . . . . . . . . . . . . . . . . . . . 65 ; 19. Routine to setup FILOP/ELB/PATH blocks . . . . . . . . . . . . . 67 ; 20. ROUTINE TO CONVERT SCAN BLOCKS . . . . . . . . . . . . . . . . . 68 ; 21. File processing ; 21.1. FILE%CLOSE . . . . . . . . . . . . . . . . . . . . . . . . 69 ; 21.2. NEXT%FILE. . . . . . . . . . . . . . . . . . . . . . . . . 70 ; 21.3. GET%FILE - Get a byte. . . . . . . . . . . . . . . . . . . 71 ; 21.4. PUT%FILE - Store a byte. . . . . . . . . . . . . . . . . . 72 ; 21.5. FILE%DUMP - Not needed . . . . . . . . . . . . . . . . . . 73 ; 22. Support routines ; 22.1. PRSFIL - Parse a file specification. . . . . . . . . . . . 74 ; 22.2. PRSSX$ - Parse a sixbit field. . . . . . . . . . . . . . . 75 ; 22.3. PRSWS$ - Parse a wild sixbit field . . . . . . . . . . . . 76 ; 22.4. CHKAL$ - Check for alphanumeric. . . . . . . . . . . . . . 77 ; 22.5. PRSOC$ - Parse a wild octal number . . . . . . . . . . . . 78 ; 22.6. INPCH$ - Input a character . . . . . . . . . . . . . . . . 79 ; 23. Operating system interface ; 23.1. SY%TIME. . . . . . . . . . . . . . . . . . . . . . . . . . 80 ; 23.2. SY%LOGOUT. . . . . . . . . . . . . . . . . . . . . . . . . 81 ; 23.3. SY%DISMISS . . . . . . . . . . . . . . . . . . . . . . . . 82 ; 24. Terminal processing ; 24.1. Message routines ; 24.1.1. Initialization. . . . . . . . . . . . . . . . . . . . 83 ; 24.1.2. Open the terminal . . . . . . . . . . . . . . . . . . 84 ; 24.1.3. Close the terminal. . . . . . . . . . . . . . . . . . 85 ; 24.1.4. Send a message. . . . . . . . . . . . . . . . . . . . 86 ; 24.1.5. Receive a message . . . . . . . . . . . . . . . . . . 87 ; 24.1.6. Set time out timer. . . . . . . . . . . . . . . . . . 88 ; 24.2. General ; 24.2.1. Determine using local line. . . . . . . . . . . . . . 89 ; 24.2.2. Open a terminal . . . . . . . . . . . . . . . . . . . 90 ; 24.2.3. T$CLOS - Close the terminal channel . . . . . . . . . 91 ; 24.2.4. Input a character . . . . . . . . . . . . . . . . . . 92 ; 24.2.5. Output a character. . . . . . . . . . . . . . . . . . 93 ; 24.2.6. Output a character for CONNECT. . . . . . . . . . . . 94 ; 24.2.7. Connect a terminal line . . . . . . . . . . . . . . . 95 ; 24.2.8. Set PIM break set . . . . . . . . . . . . . . . . . . 96 ; 24.3. Text output ; 24.3.1. TERM%DUMP . . . . . . . . . . . . . . . . . . . . . . 97 ; 24.3.2. TTODBF. . . . . . . . . . . . . . . . . . . . . . . . 98 ; 25. Error processing ; 25.1. .KERERR - Handle KERMIT-10 errors. . . . . . . . . . . . . 99 ; 25.2. KRM%ERROR - Handle the KERMSG errors . . . . . . . . . . . 100 ; 26. Data area. . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 ; 27. End of Kermit. . . . . . . . . . . . . . . . . . . . . . . . . . 104 ; 28. Robert C McQueen 22-June-1983 . . . . . . . . . . . . . . . . . 105 ; 29. Main routine . . . . . . . . . . . . . . . . . . . . . . . . . . 106 ; 30. File found - Fill in the user data . . . . . . . . . . . . . . . 111 ; 31. OPNDIR - Open the current directory if needed. . . . . . . . . . 112 ; 32. NXTBLK - Routine to advance to the next block of the directory . 113 ; 33. REREAD - Reread the current directory block. . . . . . . . . . . 114 ; 34. RDBLK - Routine to read a directory block. . . . . . . . . . . . 115 ; 35. Initialization routine . . . . . . . . . . . . . . . . . . . . . 116 ; 36. DIRECTORY SUBROUTINES. . . . . . . . . . . . . . . . . . . . . . 117 ; 37. STRUCTURE SUBROUTINES. . . . . . . . . . . . . . . . . . . . . . 119 ; 38. Logical Name Subroutines ; 38.1. .INILN - Initialize logical name . . . . . . . . . . . . . 124 ; 38.2. .NXTLN - Set up for the next name. . . . . . . . . . . . . 125 ; 39. USEFUL SUBROUTINES . . . . . . . . . . . . . . . . . . . . . . . 126 ; 40. TOPS-10 error codes. . . . . . . . . . . . . . . . . . . . . . . 129 ; 41. End of KERWLD. . . . . . . . . . . . . . . . . . . . . . . . . . 131 ; ;.end lit.pag ;- SUBTTL Revision History COMMENT | Start of version 2(100) 100 By: Robert C. McQueen On: Yes. Lots of rewritting and other things. 101 By: Nick Bush On: 22-August-1983 Fix setting up of seven or eight bit byte pointers for file I/O. Do this once when the file is opened, not each time a buffer is read. TOPS-10 is quite happy to use whatever byte size is stored in the buffer header byte pointer, and will use that size to determine the byte count. 102 By: Robert C. McQueen On: 29-August-1983 Remove the TT% routines and use the common TT_ routines in the Bliss module KERTT. 103 By: Robert C. McQueen On: 16-September-1983 Add XFR%STATUS and baud rate stats. 104 By: Robert C. McQueen & Nick Bush On: Many days - Add CRC support - Redo the SHOW command processing - Fix random bugs. 105 By: Robert C. McQueen & Nick Bush On: Many days - Implement IBM mode - Implement file disposition - Make CCL entry work 106 By: Nick Bush On: 3-November-1983 Fix terminal handling for non-network systems. Also make sure the terminal will be available when we try to use it by grabing it when we set the line. Modules: KERMIT | SUBTTL Definitions -- Default ; The following are assembly parameters for KERMIT ND PDLLEN, 400 ; Stack size TOPS10< ND D$MSFD, ^D5 ; Max number of SFDs ND D$BLKS, ^D128 ; Number of words to read in directory >; End of TOPS10 conditional ND D$ESCAP,.CHCNY ; Use control back slash for escape character SUBTTL Definitions -- Operating system -- TOPS-10 -- Channels ; The following are the various definitions for the TOPS-10 version of ; Kermit-10. TOPS10< FIL= 1 ; File channel TTY= 2 ; Kludge channel TTYHLD= 3 ; Channel to hold onto terminal with >; End of TOPS10 conditional SUBTTL Definitions -- Operating system -- TOPS-10 -- Terminal info ; The following are the terminal information blocks. These blocks are used ; to process the various information for a terminal. ;; !=========================================================================! ;; ! ANF node the terminal is connect to ! ;; !-------------------------------------------------------------------------! ;; ! Line number on that node ! ;; !-------------------------------------------------------------------------! ;; ! Sixbit device name ! ;; !-------------------------------------------------------------------------! ;; ! Channel number ! ;; !-------------------------------------------------------------------------! ;; ! Terminal UDX ! ;; !-------------------------------------------------------------------------! ;; ! I/O status on failing UUOs ! ;; !-------------------------------------------------------------------------! ;; ! Buffer address ! ;; !-------------------------------------------------------------------------! ;; ! Buffer size in words ! ;; !-------------------------------------------------------------------------! ;; \ \ ;; \ Input buffer header \ ;; \ \ ;; !-------------------------------------------------------------------------! ;; \ \ ;; \ Output buffer header \ ;; \ \ ;; !=========================================================================! TOPS10< $TTNOD==0 ; ANF node the terminal is connected to $TTLIN==1 ; Line number on that node $TTDEV==2 ; Device name $TTCHN==3 ; Terminal channel $TTUDX==4 ; Terminal UDX $TTIOS==5 ; Status from failing UUO $TTBAD==6 ; Address of the buffers $TTBSZ==7 ; Size of the buffers $TTIBH==10 ; Input buffer header offset $TTOBH==13 ; Output buffer header $TTPAG==16 ; Status of TTY PAGE when terminal opened $TTSIZ==17 ; Size of the block >; End of TOPS10 definitions SUBTTL .FD block extensions ; The .FD block extensions are to allow the handling of wild card processing ; in this module. ; Additional words TOPS10< .FDNMM==FDXSIZ ; Name mask .FDEXM==.FDNMM+1 ; Extension mask .FDDIM==.FDEXM+1 ; Offset to the directory mask .FDSFM==.FDDIM+1 ; First SFD mask .FDMOD==.FDSFM+5 ; Mod word .FDMOM==.FDMOD+1 ; Mask word for the mod word .FDSIZ==.FDMOM+1 ; Size of the block ; Offsets .FDD2M==.FDDIM-.FDPPN ; Define offset from one to another ; Flag bits in .FXMOD FD.DIR==1B0 ; Directory given FD.DFX==1B1 ; Use default directory >; End of TOPS10 conditional SUBTTL LOKWLD routine calling sequence ; The following is the argument block that is used to call the TOPS-10 wild ; card processing routine. The FILOP block that is passed is required to have ; the LEB address store in it and the PTH block stored in the LEB. ;; !=========================================================================! ;; ! .FD block addrss ! ;; !-------------------------------------------------------------------------! ;; ! Length of FILOP. block ! Address of FILOP. block ! ;; !-------------------------------------------------------------------------! ;; ! Flags ! ;; !=========================================================================! ; Argument block offsets TOPS10< $LKFDB==0 ; Offset to the .FD block $LKFLP==1 ; Filop. block information LK$FLN==LHMASK ; Length of the FILOP. block LK$FLP==RHMASK ; Address of the FILOP. block $LKFLG==2 ; Flags LK$FRS==1B0 ; First time being called LK$SFD==1B1 ; Return SFDs to the caller, otherwise ; they are suppressed $LKLEN==3 ; Length of the block >; End of TOPS10 conditional SUBTTL Definitions -- BLISS-36 interface symbols ; The following symbols are required to interface with BLISS-36 KERMSG. BLSTRU== 1 ; Bliss value of true BLSFAL== 0 ; Bliss value of false SUBTTL Definitions -- Symbols -- File types (byte size) ; The following are the allowed bytes sizes or types DEFINE $FLTYP< FT S7,<7-bit> FT S8,<8-bit> FT AUT, >; End of $FLTYP macro definition DEFINE FT(NAM,TEXT)< $FB'NAM==.. ..==..+1 >; End of FT macro definition $FBSMIN==0 ; Min value ..==0 ; Initialize the value $FLTYP ; Expand the values $FBSMAX==2 ; Max value ND D$FTP, $FBAUT ; Use auto as default SUBTTL Definitions -- Macro -- BLSRTN - Define a BLISS called routine ; BLSRTN - This macro will define a routine that is called by BLISS-36. It ; will define the offsets to the arguments on the stack. ; ; Usage: ; ; BLSRTN (Routine,) ; DEFINE BLSRTN(ROUTINE,ARGUMENTS)< ROUTINE:: PUSH P,.FP ;; Save the frame pointer PUSH P,[[POP P,.FP ;; Restore 16 POPJ P,]] ;; Return to the caller XMOVEI .FP,-2(P) ;; Point to the arguments IFNB < .XCREF ;; Turn off cross reference ..==1 ;; First argument is -1 on the stack IRP < .BLSRT(ARGUMENTS,\..) ;; Define the argument ..==..+1 ;; Count back >;; End of IRP .CREF ;; Turn CREF information back on >;; End of IFNB >; End of BLSRTN macro definition DEFINE .BLSRT(ITEM,OFFSET)> SUBTTL Definitions -- Macro -- BLSRET - Return a value to BLISS ; BLSRET - This macro will return a value to the BLISS-36 routine. It will ; store the value to return in register 1. DEFINE BLSRET(ARGUMENT),< JRST [MOVX S1,ARGUMENT ;; Get the value to return $RET] ;; Return to the caller >; End of BLSRET macro definition SUBTTL Definitions -- Macro -- BLSCAL - Call a BLISS-36 routine ;+ ;.hl1 BLSCAL ;This routine is used to call a BLISS-36 routine. It will cause the arguments ;that are given to be pushed on the stack and then the routine to be called. ;When the routine returns it will remove the items from the stack. ;.literal ; ; Usage: ; BLSCAL (PARITY,S1) ; ;.END LITERAL ;- DEFINE BLSCAL(ROUTINE,ARGS)< .XCREF ;; Turn off CREF Processing .CNT.==0 ;; Initialize the count .XCREF .CNT. ;; Don't cref this either .CREF ;; Turn the CREF stuff back on IFNB < IRP < PUSH P,ARGS ;; Put an item on the stack .CNT.==.CNT.+1 ;; Increment the count >;; End of IRP >;; IFNB PUSHJ P,ROUTINE ;; Call the BLISS routine IFN .CNT.,< ADJSP P,-.CNT. ;; Remove the items from the stack >;; End of IFN .CNT. >; End of BLSCAL macro definition SUBTTL Definitions -- Macro -- KERRORS - Things passed to BLISS ;+ ;.HL1 KERRORS ;The following are the items that are passed back to the BLISS-36 routines. ;- DEFINE KERRORS< KER NORMAL,013, KER INTERNALERR,022, KER LINTOOLNG,102, KER EOF,113, KER RMS32,122, KER NOMORFILES,133, KER ILLFILTYP,142, KER REC%TOO%BIG,152, KER ERRMSG,162, KER CHKSUMERR,172, KER SNDERR,202, KER RETRIES,212, KER EXIT,223, KER UNIMPLGEN,232, KER UNISRV,242, KER PROTOERR,252, KER ZEROLENMSG,262, KER LINTERM,272, KER TIMEOUT,300, KER ABORTED,312, KER RECERR,322, >; End of KERRORS macro definition DEFINE KER(TYPE,VALUE,TEXT) KERRORS SUBTTL Definitions -- Macro -- $KERR - Issue error messages ;+ ;.hl1 $KERR ;This macro will cause an error message to be issued. ;- DEFINE $KERR(Message)< TOPS10< $TEXT (,) >; End of TOPS10 conditional TOPS20< $TEXT (,) >; End of TOPS20 conditional >; End of $KERR macro definition SUBTTL Definitions -- Macro -- KERERR - Issue an error to the remote ;+ ;.hl1 KERERR ;This macro is used to issue an error message to the remote KERMIT. ;.LITERAL ; ; Usage: ; KERERR () ; (Return here) ; ;.end literal ;- DEFINE KERERR(TEXT)< GLOB <.KERERR> $CALL .KERERR JUMP [ITEXT(TEXT)] >; End of KERERR macro definition SUBTTL Definitions -- Macro -- Character masks ;+ ;.hl1 Character mask macros ; The following set of macros will define a four word bit map, with ;each bit corresponding to a single ascii character. Only the first ;32 bits of each word are used. This is compatible with the corresponding ;macro in MACSYM, the usage of character masks in TOPS-20 JSYS's, and ;the usage in TECO. ; ;.hl2 BRINI$ ; This macro will initialize the masks. ;.literal ; ; Usage: ; BRINI$(NAME) ; ; Where: NAME is the name to be used for building the mask. It should not ; be more than 3 characters, as it is used to generate symbol names. ; ;.end literal ;- DEFINE BRINI$(NAME,INIT),< IFNB ,< %.0'NAME==%.0'INIT ;; Copy the initial values (if any) %.1'NAME==%.1'INIT %.2'NAME==%.2'INIT %.3'NAME==%.3'INIT > ;; End of IFNB IFB ,< %.0'NAME==<%.1'NAME==0> ;; If no initial value, use 0 %.2'NAME==<%.3'NAME==0> > ;; End of IFB > ; End of DEFINE BRINI$ ;; Now define the macros for adding an removing characters DEFINE BRKCH$(NAME,FIRST,LAST)< $$$VAL==FIRST $$$VL1==FIRST IFNB ,<$$$VL1==LAST> .XCREF $$$VAL,$$$VL1 BRK$$$(NAME,$$$VAL,$$$VL1,!) SUPPRESS $$$VAL,$$$VL1 > ;; End of BRKCH$ DEFINE UNBRK$(NAME,FIRST,LAST)< $$$VAL==FIRST $$$VL1==FIRST IFNB ,<$$$VL1==LAST> .XCREF $$$VAL,$$$VL1 BRK$$$(NAME,$$$VAL,$$$VL1,&^-) SUPPRESS $$$VAL,$$$VL1 > ;; End of UNBRK$ DEFINE BRK$$$(NAME,FIRST,LAST,OP)< $$$FST==FIRST ;; Get initial value $$$LST==LAST ;; Get final value .XCREF $$$FST,$$$LST REPEAT $$$LST-$$$FST+1,< $$$WRD==$$$FST/^D32 ;; Determine which word gets this char $$$BIT==$$$FST-<$$$WRD*^D32> ;; And determine the bit IFE $$$WRD-4,< ;; Special 'char' for TECO? $$$WRD==3 ;; Yes, put in 3rd word $$$BIT==$$$BIT+^D32 ;; After 32'nd bit > ;; End of IFE $$$WRD-4 BR$$$$(NAME,\"<$$$WRD+"0">,$$$BIT,OP) $$$FST==$$$FST+1 > ;; End of REPEAT > ; End of BRK$$$ DEFINE BR$$$$(NAME,WORD,BIT,OP)<%.'WORD'NAME==%.'WORD'NAME'OP'1B> DEFINE BRGEN$(NAME) DEFINE BRWRD$(NAME,INDEX),<%.'INDEX'NAME> ; Now generate some common masks BRINI$(ALL) ; All characters BRKCH$(ALL,0,177) ; . . . SUBTTL End of KERUNV END