; FRIENDLY - V1.0 ; This program may be installed as a catchall task for CCL (as ...CA2) ; or for MCR (as ...CA.). ; It is executed when the command entered by the user is understood by ; neither MCR nor CCL. The original idea was a give the user one of ; several "friendly" messages to say that the command was in error. ; But we couldn't resist adding other messages. No fair making more ; than a few intentional errors after first installing the program. ; They are more fun to get when you haven't seen them before. ; Eventually you will hear from most users! ; ; This code is a slightly modified version of the COOKIE program. ; ; B. T. ; .TITLE FRIENDLY .IDENT /V1.0/ .ENABLE LC .MCALL GTIM$S,QIOW$,DIR$,GMCR$ .MCALL EXIT$S MCRLIN: GMCR$ ; Allocate MCR command line buffer ENDPR: .ASCII <15><12>/>/ ; Print prompt after message .EVEN PSOUT: QIOW$ IO.WLB,1,12,,,,<00,00,40> GTIMBF: .BLKW 8. BEGIN: DIR$ #MCRLIN ; Get MCR command line MOV @#$DSW,R1 ; Get length of command line ADD #2,R1 ; Add two to length MOV #"??,MCRLIN ; Replace DIC code with text preceding buffer MOV R1,PSOUT+Q.IOPL+2 MOV #MCRLIN,PSOUT+Q.IOPL DIR$ #PSOUT ; Print command line preceded by ?? GTIM$S #GTIMBF CLR R0 ;; ADD GTIMBF+6,R1 ;; MUL #60.,R1 ;; ADD GTIMBF+10,R1 ;; BIC #100000,R1 ;; MOV R1,R0 ;; CLR R1 ;; MUL #60.,R0 ;; ADD GTIMBF+12,R1 ;; ADC R0 ;; DIV #NNN,R0 ;; ASL R1 ;; MOV TAB(R1),R3 MOV GTIMBF+G.TIMI,R1 ; Get minute of hour MUL #60.,R1 ; Convert to seconds ADD GTIMBF+G.TISC,R1 ; Add second of minute DIV #NNN,R0 ; Divide by number of messages ASL R1 ; Multiply remainder by 2 MOV TAB(R1),R3 MOV (R3)+,PSOUT+Q.IOPL+2 MOV R3,PSOUT+Q.IOPL DIR$ #PSOUT MOV #3,PSOUT+Q.IOPL+2 MOV #0,PSOUT+Q.IOPL+4 MOV #ENDPR,PSOUT+Q.IOPL DIR$ #PSOUT ; Print prompt after message EXIT$S .MACRO TT B,STRING S'B': .WORD L'B' .ASCII \STRING\ L'B'= .-S'B'-2 $$= $$+1 .EVEN .ENDM ; $$= 0 TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, TT \$$, NNN=$$ .MACRO TENT C .WORD S'C' $$$=$$$+1 .ENDM $$$=0 TAB: .REPT $$ TENT \$$$ .ENDM .END BEGIN