.TITLE ERRMSG .ENABL LC ; ; CALL ERRMSG( STRING [,NCHRS] ) -- This routine outputs a message ; to the user's terminal (TI0:). If NCHRS is not present, string ; is output to first zero byte. For example, ; ; CALL ERRMSG( 'Ooops! You made a boo-boo.' ) ; ; NCHRS isn't needed since the FORTRAN compiler constructs ; delimited strings with at least one zero byte at the end. ; .PSECT ERRMSG .MCALL QIOW$S ERRMSG::MOV R0,-(SP) ;SAVE R0 CMP #1,(R5) ;ONE ARGUMENT? BEQ 1$ ;BRANCH IF TRUE MOV @4(R5),R0 ;GET NUMBER OF CHARACTERS BR 3$ ;BRANCH TO OUTPUT MESSAGE ; 1$: MOV 2(R5),R0 ;GET ADDRESS OF STRING 2$: TSTB (R0)+ ;ZERO BYTE? BNE 2$ ;BRANCH IF FALSE SUB 2(R5),R0 ;CALCULATE LENGTH OF STRING ; 3$: QIOW$S #IO.CCO,.MOLUN,#1,,,,<2(R5),R0,#40> MOV (SP)+,R0 ;RESTORE R0 RTS PC ;RETURN .END