;********************************************************************* ; ECHOIN.M68 - ECHO another job's INput to your screen ; ; by Dave Heyliger - AMUS Staff ; ; Usage: ECHOIN {jobnam} ;********************************************************************* SEARCH SYS ;search normals SEARCH SYSSYM SEARCH TRM PHDR -1,0,PH$REE!PH$REU ;standard header VMAJOR = 1. ;version 1.0 by Dave Heyliger VMINOR = 0 .OFINI ;define variables... .OFDEF NAME,4 ;job name PACKed .OFSIZE IMPSIZ ;IMPSIZ is 4 bytes total GETIMP IMPSIZ,A5 ;A5 points to start of var block BYP ;bypass whitespace LIN ;just INPUT cr??? BNE 10$ ;nope TYPECR ;yup, error message and quit EXIT 10$: LEA A1,NAME(A5) ;get ready to PACK jobnam PACK ;PACK job name into NAME var PACK LEA A1,NAME(A5) ;repoint A1 to job name MOV JOBTBL,A0 ;A0 points to JOB table 20$: MOV (A0)+,A4 ;get job IDX pointer into A4 MOV A4,D0 ;set status register BPL 30$ ;if positive, see if names match BEQ 20$ ;if 0, get next IDX BMI ERROR ;if negitive - error 30$: CMM @A1,JOBNAM(A4) ;found match? BNE 20$ ;nope, look again MOV JOBTRM(A4),A4 ;yes, point A4 to terminal def block MOV T.IBF(A4),A0 ;A0 always points to start of buff LOOP: CTRLC END ;quit on ^C 5$: SLEEP #1000. ;don't burn CPU time MOV T.IBF(A4),A2 ;point A2 to input buffer of job LIN ;at a CRLF? BNE 10$ ;nope, must be input.... CRLF ;yup, CRLF TYPE <.> ;mimmick a dot 7$: LIN ;still at CRLF? BNE 10$ ;no, user entered something CTRLC END ;quit on ctrlc SLEEP #1000 ;yes, sleep BR 7$ ;and look again 10$: CTRLC END ;quit on ctrlc MOVB (A2)+,D1 ;echo line til CR or LF CMPB D1,#15 ;CR? BEQ 30$ ;yes, don't echo, see if done CMPB D1,#0 ;end of line? BEQ 30$ ;yup, don't echo, see if done TTY ;else type out the character 20$: SLEEP #1000 ;wait just a little bit BR 10$ ;and get next character 30$: CMPB @A0,#12 ;user entered return? BEQ LOOP ;yes, start over SLEEP #1000 ;nope, sleep a bit DEC A2 ;repoint back to last character BR 10$ ;and scan again ERROR: TYPECR END: EXIT END .