.TITLE IOMNG .IDENT /2909.2/ ; ; ; ; .WRITTEN BY RAY DI MARCO ; 29-SEP-80. ; ; ; ; VERSION 290980/02. ; ; ; ;---------------------------------------------------------------------- ; ; ; THIS MODULE CONTAINS THE I/O MANAGEMENT ROUTINES WHICH ARE USED TO ALLOW ; THE PROGRAMS TO COMMUNICATE WITH THE OPERATOR VIA LINE-WINDOWS. THE ; ROUTINES ARE - ; ; IOM.IN ALLOWS A LINE TO BE INPUT (USES 'INPUT' LINE) ; IOM.ST USED TO DISPLAY STATUS (USES 'STATUS' LINE) ; IOM.PT USED TO PROMPT THE OPERATOR (USES 'PROMPT' LINE' ; IOM.ER USED TO DISPLAY ERROR MESSAGE TO OPERATOR (USES 'ERROR' LINE) ; ; THESE ROUTINES MUST BE LINKED WITH THE 'CONIO' MODULE TO FUNCTION, AS THEY ; USE CUSOR POSITIONING AND LINE ERASING FEATUES. ; ; ; .SBTTL MODIFICATIONS ; ; ; 12-JAN-81 ADDED IN 'IOM.TB' TO TRAP LAST MESSAGES OUTPUT ; ; ; ; ; .SBTTL DOCUMENTATION - ARGUMENT PASSING AND REGISTER USAGE ; ; ; THE ROUTINES EXPECT THE ARGUMENTS TO BE PASSED VIA THE REGISTERS AND THEY ; PRESERVE ALL REGISTERS. THE ARGUMENTS ARE- ; ; IOM.IN R0 HOLDS THE ADDRESS OF AN 80 BYTE BUFFER AT ENTRY. THE ; INPUT IS STORED IN THE BUFFER AND IS TERMINATED WITH A NULL. ; ; IOM.?? ??=PT,ER,ST EXPECT THE ADDRESS OF AN ASCII MESSAGE TO BE ; HELD IN R0. THIS MESSAGE IS DISPLAYED IN THE APPROPRIATE ; LINE ON THE SCREEN. IF 'R0' HOLDS A 'ZERO' AT ENTRY THEN ; A BLANK (ALL SPACE) MESSAGE IS DISPLAYED. ; ; ; .SBTTL DOCUMENTATION - SCREEN LAYOUT ; ; ; THE TOP FOUR LINES OF THE SCREEN ARE CONTROLLED BY THIS MODULE. THESE ; LINES ARE USED FOR 'STATUS', 'PROMPT', 'INPUT' AND 'ERRORS'. ; ; ; .SBTTL DOCUMENTATION - MACROS TO INPERFACE TO THIS MODULE ; ; ; MACROS ARE PROVIDED TO SIMPLIFY CALLING THE ROUTINES IN THIS MODULE. ; THESE ARE STORED IN THE COMMON PREFIX FILE, AND ARE CALLED ; ; INPUT PROMPT STATUS ERROR ; ; ; ; ; .SBTTL DECLARATIONS ; ; .MCALL .PUSH,.POP ; STACKING MACROS ; ; .GLOBL IOM.IN ; INPUT A LINE ENTRY .GLOBL IOM.ST,IOM.PT,IOM.ER ; STATUS/ERROR MESSAGES .GLOBL IOM.BF,IOM.IP,IOM.TB ; BUFFER/POINTER ; .GLOBL CON.EL,CON.LO,CON.LI ; 'CONIO' ; ; ; .PSECT CODE ; OPEN CODE SECTION ; ------ ---- ; ; ; ; ; ; .SBTTL ROUTINE - 'IOM.IN' ... INPUT A LINE FROM CONSOLE ; ; IOM.IN: .PUSH R0 ; SAVE BUFFER ADDRESS MOV #2.*256.,R0 ; LINE NUMBER -> R0 CALL CON.EL ; CLEAR LINE MOV #200$,R0 ; MESSAGE ADDRESS -> R0 CALL CON.LO ; PROMPT FOR INPUT .POP R0 ; RESTORE BUFFER ADDRESS CALL CON.LI ; INPUT LINE RETURN ; HOME ; 200$: .ASCII />/<200> ; ; ; ; ; .SBTTL ROUTINES TO DO OUTPUT TO SPECIFIC LINES OF SCRRENS ; ; ; .MACRO OUTLIN NAME,NUMBER NAME: MOV R0,IOM.TB+<2*NUMBER> JSR R5,OUTIT .BYTE 0,NUMBER .ENDM OUTLIN ; ; OUTLIN IOM.ST,0 ; LINE 0 == STATUS OUTLIN IOM.PT,1 ; LINE 1 == PROMPT OUTLIN IOM.ER,3 ; LINE 3 == ERROR ; ; ; ; ; OUTIT: .PUSH R0 ; SAVE R1 MOV (R5),R0 ; COORDINATES -> R0 CALL CON.EL ; ERASE LINE .POP R0 ; MESSAGE ADDRESS -> R0 BEQ 100$ ; NO MESSAGE -> SKIP CALL CON.LO ; PRINT MESSAGE 100$: .POP R5 ; RESTORE R5 RETURN ; HOME ; ; ; ; ; .SBTTL VARIABLES/BUFFER ; ; ; ; IOM.IP: .BLKB 2 ; INPUT FETCH POINTER IOM.BF: .BLKB 100. ; DEFAULT INPUT BUFFER IOM.TB: .WORD 0 ; STATUS MESSAGE ADDRESS .WORD 0 ; PROMPT MESSAGE ADDRESS .WORD 0 ; SPARE .WORD 0 ; ERROR MESSAGE ADDRESS ; ; .END