.TITLE TEST ; ; THIS DEFINES THE INTERFACE TO THE SCREEN HANDLING ROUTINES AND ; SHOULD BE INCLUDED IN THE SOURCE OF ANY PROGRAM USING THEM. ; ; THE COMMON AREA 'SCREEN' CONTAINS THE FOLLOWING VARIABLES: ; ; ADDBUF - ADDRESS OF BUFFER TO HOLD FORMATTING STRINGS ; TOTBYT - LENGTH OF BUFFER ; BYTCNT - NUMBER OF BYTES IN BUFFER ALREADY USED ; COLNO - COLUMN NUMBER FOR CURSOR POSITIONING (1-N) ; ROWNO - ROW NUMBER FOR CURSOR POSITIONING (1-N) ; TABCNT - TAB STOP COUNT FOR TABBING ; LINENO - LINE NUMBER FOR SCROLL AREA SETTING ; OUT - FLAG TO CONTROL OUTPUT (1=OUTPUT THE STRING) ; LUN - LUN FOR OUTPUT IF OUT=1 ; ; AS THESE ARE GLOBALLY DEFINED IN CTLOUT THEY ARE NOT NEEDED HERE. BUFF: .BLKB 40. ATT: .WORD 7693. ERASE: .WORD 24. NULL: .WORD 0 LIN: .ASCII /@ABCDEFGHIJKLMNOPQRSTUVW/ COL: .ASCII \ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM\ .ASCII /NOPQRSTUVWXYZ[\]^_`abcdefghijklmno/ ERALIN: .BYTE 22. .EVEN X100: .BLKW 4 .ASCII /This is Method 2 at Line 5, Column 10/ X100L=.-X100 .EVEN X200: .ASCII /This is Method 1 at Line 7, Column 10 (11 for MK2TBL)/ X200L=.-X200 .EVEN .MCALL QIOW$S,EXIT$S START: MOV #1,OUT ; Say we want the Sequences Output MOV #5,LUN ; On LUN 5 MOV #40.,TOTBYT ; Our Buffer is 40 bytes long MOV #BUFF,ADDBUF ; And starts here MOV #X100,R0 ; Set up the Method 2 approach MOV ERASE,(R0)+ ; Insert Erase Characters MOV NULL,(R0)+ ; And Null (Just in Case) MOV ATT,(R0)+ ; Now the Cursor Bit MOVB COL+9.,(R0)+ ; The Column (note 9, not 10) MOVB LIN+4,(R0)+ ; The Line (note 4, not 5) QIOW$S #IO.WLB,#5,#1,,,,<#X100,#X100L,#0> ; Output It MOVB #10.,COLNO ; Set the Column Number MOVB #7,ROWNO ; and the Row Number CALL CURPOS ; Position the Cursor CALL INVON ; Set Inverse Video On QIOW$S #IO.WLB,#5,#1,,,,<#X200,#X200L,#0> ; Output the First Method CALL INVOFF ; Set Inverse Video Off EXIT$S .END START