.TITLE SEND STRING TO CONSOLE SANS FIV WRITE .SBTTL SUBROUTINE OUTSTR - OUTPUT STRING TO CONSOLE .MCALL .TTYOUT ; ; SUBROUTINE OUTSTR ; CALLING SEQUENCE:: CALL OUTSTR(BUF[,NCHAR]) ; FUNCTION:: ; THIS ROUTINE SENDS THE CHARACTERS IN THE BYTE VECTOR 'BUF' ; TO THE CONSOLE TERMINAL. TERMINATION IS BASED EITHER ON ; THE NUMBER OF CHARACTERS BEING REACHED OR, FINDING A NULL. ; ARGUMENTS: ; BUF IS THE BYTE ARRAY CONTAINING THE CHARACTER STRING ; NCHAR IS AN OPTIONAL ARGUMENT, IF PRESENT IT IS THE NUMBER ; OF CHARACTERS TO BE SENT ; OUTSTR::CMP #1,(R5)+ ;HOW MANY ARGUMENTS? BNE TWO ;IF NOT ONE, THEN ASSUME TWO MOV (R5),R1 ;GET ADDRESS OF BUFFER 1$: TSTB (R1) ;IS IT A NULL BEQ EXIT ;IF IT IS, WE ARE DONE MOVB (R1)+,R0 .TTYOUT ;SEND IT BR 1$ ; ; THE FOLLOWING CODE IS FOR TWO ARGUMENTS ; TWO: MOV (R5)+,R3 ;R3 WILL HAVE THE ADDRESS OF THE ARRAY MOV @(R5),R1 ;R1 WILL HAVE THE NUMBER OF CHARACTERS 2$: MOVB (R3)+,R0 .TTYOUT SOB R1,2$ ;DECREMENT COUNTER EXIT: RTS PC .SBTTL SUBROUTINE SWAPB - SWAP BYTES ; ; SUBROUTINE SWAPB ; FUNCTION: SWAP THE BYTES IN A WORD ; CALLING SEQUENCE:: CALL SWAPB(IARG) ; ARGUMENTS:: IARG IS THE VARIABLE WHOSE BYTES ARE TO BE SWAPPED ; SWAPB:: TST (R5)+ ;BUMP OVER ARGUMENT COUNTER SWAB @(R5) ;SWAP BYTES RTS PC .END