.title vaast ;+ ; this routine is set up to handle the types of AST's delivered by ; the virtual aether driver. These AST's are delivered with the ; address of the real AST service routine as the parameter on the ; stack. This routine saves all registers on the stack, anticipating ; that the real AST routine is in a high level language and will modify ; the registers, calls the real AST routine, restores the registers, ; removes the parameter from the stack and dismisses the AST ; ; this routine will work for all high level languages, since no ; parameters are passed to the real AST routine. ;- .mcall astx$s vaast:: mov r0,-(sp) ; save r0 mov r1,-(sp) ; save r1 mov r2,-(sp) ; save r2 mov r3,-(sp) ; save r3 mov r4,-(sp) ; save r4 mov r5,-(sp) ; save r5 jsr pc,@14(sp) ; call real AST address mov (sp)+,r5 ; restore r5 mov (sp)+,r4 ; restore r4 mov (sp)+,r3 ; restore r3 mov (sp)+,r2 ; restore r2 mov (sp)+,r1 ; restore r1 mov (sp)+,r0 ; restore r0 tst (sp)+ ; pop parameter from stack astx$s ; dismiss ast .end