.TITLE MG04.. GENERAL OUTPUT PROCEDURE ; .IDENT /MG04.B/ ; ; MODS LIST ; ; (A) AUTOMATIC LUN ASSIGNMENT ; (B) ENSURE SOME CHARACTERS TO BE OUTPUT ; ; ; ; .PAGE .SBTTL VDU OUTPUT PROCEDURE .SBTTL . IAS VDU SOFTWARE ; ; .IF EQ OPSYS-IAS ;IS THIS AN IAS SYSTEM .MCALL QIOW$S ; V$TX:: ; R0 -> DATA STRING FOR OUTPUT ; CALL R$ADDRESS ;CHECK IF ADDRESS VALID IFERROR 100$ ;J IF INVALID TST @R0 ;ANY CHARACTERS IN STRING BLE 100$ ;J IF NO CHARACTERS SAVE R0,R1 ;STORE R1 AND R0 MOV (R0),R1 ;R1 HOLDS LENGTH OF STRING ADD #2,R0 ;INCREMENT TO START OF CHARACTERS CALL V$ON ;ASSIGN LUN TO TERMINAL QIOW$S #IO.WAL,V$LUN,V$EFN,,,,;FUNCTION WRITE PASS ALL IFERROR 200$ ;LUN 1 ;EVENT FLAG 4 UNSAVE R0,R1 ;RESTORE R1 AND R0 100$: RETURN ;EXIT ; ; 200$: HALT NOP ; .ENDC ; .PAGE .SBTTL . RT-11 SOFTWARE SECTION ; .IF EQ OPSYS-RT11 ;IS THIS AN RT-11 SYSTEM .MCALL .TTYOUT ; ; V$TX:: TST @R0 ;ARE THERE ANY CHARACTERS IN STRING BLE 20$ ;J IF NOT ; SAVE R0,R1,R2 ;PROTECT REGISTERS MOV @R0,R1 ;HOLD LENGTH OF STRING MOV R0,R2 ;HOLD STRING ADDRESS TST (R2)+ ;INCREMENT TO CHARACTER ADDRESS 10$: MOVB (R2)+,R0 ;HOLD CHARACTER IN R0 .TTYOUT ;OUTPUT CHARACTER TO VDU/TERMINAL SOB R1,10$ ;LOOP TILL END OF STRING UNSAVE R0,R1,R2 ;RESTORE ALL REGISTERS 20$: RETURN ;EXIT FROM CALLING PROGRAM ; ; .ENDC ; ; .END ; ;