.TITLE DEMOFG .IDENT /V05.01/ ; FOREGROUND DEMONSTRATION PROGRAM TO PRINT MESSAGE TO BACKGROUND, THEN ; QUEUE A MESSAGE EVERY 2 SECONDS FOR THE BACKGROUND TO BEEP. .MCALL .SDATC,.PRINT,.MRKT,.QSET,.SPND START:: .PRINT #MSG ;PRINT INTRODUCTORY MESSAGE .QSET #QUEUE,#100. ;SET ASIDE 100 Q ELEMENTS FOR MESSAGES .MRKT #AREA,#TIME,#MKTC,#1 ;SET UP MKTIM FOR 2 SECONDS FROM NOW .SPND ;SUSPEND THE FG TILL MKTIM SATISFIED ; MKTIM COMPLETION ROUTINE MKTC: CMP MSGCNT,#90. ;90 MESSAGES QUEUED YET? BGT MKTC1 ;YES-NO SENSE QUEUEING ANOTHER .SDATC #AREA,#BUFFER,#1,#SDATC ;SEND MESSAGE TO BG INC MSGCNT ;BUMP MESSAGE COUNTER MKTC1: .MRKT #AREA,#TIME,#MKTC,#1 ;SET UP ANOTHER MKTIM FOR 2 SECONDS RETURN ;RETURN FROM COMPLETION ROUTINE ; SDAT COMPLETION ROUTINE SDATC: DEC MSGCNT ;ONE OF THE MESSAGES HAS BEEN RECIEVED RETURN ;RETURN(RTS PC) ; ASCII MESSAGES .NLIST BEX MSG: .ASCII /FOREGROUND DEMONSTRATION PROGRAM/<15><12> .ASCII /SENDS A MESSAGE TO THE BACKGROUND PROGRAM "DEMOBG"/<15><12> .ASCIZ /EVERY 2 SECONDS, TELLING IT TO BEEP./ .EVEN MSGCNT: .WORD 0 ;MESSAGE COUNTER ;TIME CONSTANT TIME: .WORD 0 ;HIGH ORDER .WORD 60.*2 ;60 TICKS A SECOND,2 SECONDS AREA: .BLKW 6 ;EMT ARGUMENT AREA BUFFER: .BLKW 400 ;BUFFER FOR MESSAGES ;QUEUE AREA QUEUE: .BLKW 100.*10. ;10. WORDS PER QUEUE ELEMENT FOR THE XM MONITOR .END START