; ; DEFINITIONS OF GCML MACROS ; .MACRO GCMLD$ X ; ; GCML TABLE ; G.CFDB=0 ;POINTER TO COMMAND FDB(TERMINAL) G.FFDB=2 ;POINTER TO FILE FDB G.CLUN=4 ;LUN OF TERMINAL G.FLUN=6 ;LUN OF FILE CHANNEL ; G.ERR=10 ;ERROR RETURN BYTE G.MODE=11 ;MODE FLAGS BYTE G.CMLD=12 ;COMMAND LINE RETURN DESCRIPTOR ; =14 G.PSDS=16 ;USER PROMPT DESCRIPTOR ; =20 G.LEVL=22 ;CURRENT NEST LEVEL G.MAXD=23 ;MAXIMUM NEST LEVEL G.PLIN=24 ;POINTER TO PRESET LINES STRING IF ANY G.PPTR=26 ;PUSH DOWN LIST POINTER G.RBUF=30 ;POINTER TO LINE BUFFER G.DPRM=32 ;DEFAULT PROMPT ; G.CMDF=40 ;COMMAND PROCESSOR FLAGS AND SWITCHES ; G.STAB=42 ;START OF SYMBOL TABLE G.MAXS=26. ;MAXIMUM SYMBOLS ('A-'Z) G.LABL=G.STAB+G.MAXS ;6 CHARACTER LABEL SAVE AREA ; G.CMDV=<2++1>&177776 ;BYTES TO SAVE ON PUSHCLOSE(MUST BE EVEN) ;SAVE FLAGS,HALF OF SYMTAB. G.CMDT=2+G.MAXS+6 ;COMMAND PROCESSOR TABLE ;FLAGS+SYMBOLS+LABLE SEARCH ; G.PDSA=G.CMDF+G.CMDT ;PUSH DOWN STACK START ADDRESS G.PDSL=<6+<5*2>+G.CMDV> ;PUSH DOWN FRAME SIZE ; ; BIT DEFINITIONS ; GE.COM=1 ;COMMENTS ';' ARE ALLOWED GE.IND=2 ;INDIRECT '@' LINES ARE PROCESSED GE.CLO=4 ;CURRENT COMMAND INDIRECT FILE IS CLOSED BEFORE RETURN GE.CMD=10 ;COMMAND '.' LINES ARE PROCESSED ; GE.IOR=-1 ;I/O ERROR GE.OPR=-2 ;INDIRECT FILE OPEN ERROR GE.BIF=-3 ;BAD INPUT FILE GE.MDE=-4 ;MAX INDIRECT DEPTH EXCEEDED GE.CER=-5 ;ILLEGAL '.' COMMAND LINE GE.EOF=-10. ;TOP LEVEL END OF FILE ; ; SWITCH BITS GS.TRA=1 ;/TA-TRACE ALL SWITCH GS.DIS=200 ;LINE DISPLAYED FLAG GS.SKP=10000 ;SKIPPING FLAG(RESET ON UNEXPECTED POPS) GS.TRC=400 ;/TR-TRACE THIS LEVEL ; ; .MACRO GCMLD$ X .ENDM .ENDM ; ; ; ; ; TABLE GENERATING MACRO ; .MACRO GCMLB$ CF,FF,CL,FL,MD,PT,UB,?PD,?UB1 ; .WORD CF .WORD FF .WORD CL .WORD FL ; .MCALL GCMLD$ GCMLD$ ; .BYTE 0,GE.COM!GE.IND!GE.CLO!GE.CMD ;ERROR AND MODE .BLKW 4 ;PROMPT AND COMMAND DESCRIPTORS .BYTE -1,MD ;CURRENT AND MAX DEPTHS .WORD 0 ;PRESET LINE POINTER .WORD PD ;PUSH DOWN POINTER ; .IF NB, .WORD UB .IFF .WORD UB1 .ENDC ; $$$=. .ASCII <15><12> .IF NB , .ASCII /PT>/ .IFF .ASCII / >/ .ENDC .=$$$+6 ; .WORD 0 ;INDIRECT COMMAND PROCESSOR FLAGS .BLKB G.CMDT ;COMMAND PROCESSOR TABLE ; PD: .BLKB *G.PDSL ; .IF B UB1: .BLKB 82. .ENDC ; ; .ENDM ;GCMLB$ ; ; .MACRO GCML$ GD,PA,PL .MCALL LDR0$ LDR0$ GD ;.MCALL GCMLD$ ; GCMLD$ DEF$L .IIF NB,MOV PL,G.PSDS+0(R0) .IIF NB,MOV PA,G.PSDS+2(R0) .IIF B CLR G.PSDS+2(R0) CALL .GCML1 .ENDM .MACRO RCML$ GD .MCALL LDR0$ LDR0$ GD CALL .GCML2 .ENDM .MACRO CCML$ GD .MCALL LDR0$ LDR0$ GD CALL .GCML3 .ENDM .MACRO ECML$ GD .MCALL LDR0$ CALL .GCML4 .ENDM .MACRO SCML$ GD,LP .MCALL LDR0$ LDR0$ GD ; GCMLD$ DEF$L MOV LP,G.PLIN(R0) .ENDM