NEW AUTO 3,1 *-------------------------------------- SCOPE.New lda ScopePtr tay clc adc #SCOPE bcs .9 sta ScopePtr dec bLocalScope iny iny #SCOPE.LocalPtr lda (ScopeStk),y pha >LDA.G CC.ScopeID * clc adc #1 sta (pData),y tax iny lda (pData),y adc #0 ldy ScopePtr iny sta (ScopeStk),y #SCOPE.ID Hi txa dey sta (ScopeStk),y #SCOPE.ID Lo iny iny pla sta (ScopeStk),y #SCOPE.LocalPtr iny lda #0 sta (ScopeStk),y #SCOPE.FrameSize .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SCIN jsr SCOPE.Push lda ScopePtr >PUSHA tay iny iny >PUSHB (ScopeStk),y iny >PUSHB (ScopeStk),y >PUSHBI 5 >SYSCALL PrintF * >DEBUG .FIN clc rts .9 lda #E.OOH sec .99 SCOPE.New.RTS rts *-------------------------------------- SCOPE.AddLocal lda #'F' jsr SYM.LookupLabelA bcs SCOPE.New.RTS txa jmp CODE.AddLocal *-------------------------------------- SCOPE.RemLocal lda #'F' define FRAME SIZE jsr SYM.NewLabelA bcs SCOPE.New.RTS ldy ScopePtr iny iny iny lda (ScopeStk),y #SCOPE.FrameSize jmp CODE.RemLocal *-------------------------------------- SCOPE.Close .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SCOUT jsr SCOPE.Push lda ScopePtr >PUSHA tay iny iny >PUSHB (ScopeStk),y #SCOPE.LocalPtr iny >PUSHB (ScopeStk),y #SCOPE.FrameSize >PUSHBI 5 >SYSCALL PrintF .FIN lda ScopePtr beq * sec sbc #SCOPE sta ScopePtr inc bLocalScope .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SC jsr SCOPE.Push lda ScopePtr >PUSHA tay iny iny >PUSHB (ScopeStk),y iny >PUSHB (ScopeStk),y >PUSHBI 5 >SYSCALL PrintF * >DEBUG .FIN clc .99 rts *-------------------------------------- SCOPE.Push lda ScopePtr SCOPE.PushA clc adc #SCOPE.ID+1 tay lda (ScopeStk),y >PUSHA dey #SCOPE.ID lda (ScopeStk),y >PUSHA rts *-------------------------------------- MAN SAVE usr/src/bin/cc.s.scope LOAD usr/src/bin/cc.s ASM