; ********************************************* IOPORT.SBR ; ; IOPORT - SEND CHARS TO OTHER PORT OUTPUT AREA IN BASIC ; ; by DAVID PARKER, SNOWMASS VILLAGE, CO 18623, (303) 923-4263 ; ; USAGE MAP1 TEST$,S,80 ; TEST$="HI THERE"+CHR(13)+CHR(10) ; MAP1 JOB$,S,6,"JOB9 " ; XCALL IOPORT,JOB$,TEST$ ; ; NOTE JOB$ MUST BE 6 CHARS LONG (PADD WITH SPACES ; ;Edit History: ; 1.0 06-01-86 created. /DGP ; ; ;Program version number VMAJOR=1 VMINOR=0 OBJNAM IOPORT.SBR SEARCH SYS SEARCH SYSSYM SEARCH TRM BUFFER=0 PHDR -1,0,PH$REE!PH$REU MOV JOBTBL,A0 MOV 4(A3),A6 ; A3 POINTS AT JOB DESIRED LOOP: MOV (A0)+,A1 ; PARSE DOWN JOBTBL LOOK FOR CORRECT JOB MOV A1,D0 BMI ENDIT ; END OF JOB TABLE ? BEQ ENDIT LEA A1,JOBNAM(A1) ; UNPACK JOBNAM FROM RAD50 IN JCB LEA A2,BUFFER(A4) PUSH A6 ; SAVE A6 FROM BEING WRECKED BY UNPACK UNPACK UNPACK POP A6 ; GET A6 BACK CLRB @A2 LEA A2,BUFFER(A4) ; A2 POINTS AT CURRENT JOB TABLE ENTRY MOV @A2,D2 ; CHECK 1ST 4 BYTES FOR JOB MATCH MOV @A6,D3 CMP D2,D3 BNE LOOP ; NO MATCH - NEXT JOB CLR D2 ; CHECK LAST 2 BYTES FOR JOB MATCH CLR D3 MOVW 4(A2),D2 MOVW 4(A6),D3 CMP D2,D3 BEQ FOUND ; FOUND CORRECT JOB BR LOOP ; NO MATCH - NEXT JOB FOUND: MOV -(A0),A0 ; OOPS NEED TO REVERSE INCREMENT MOV JOBTRM(A0),A5 ; A5 SET FOR TTYOUT MOV 16(A3),A3 ; A3 POINTS AT PASSED MESSAGE LOOP2: CLR D1 MOVB (A3)+,D1 ; MOVE IN MESSAGE BYTE AT A TIME BEQ ENDIT ; LOOK FOR 0 BYTE TTYOUT ; BLAST IT TO OTHER JOB BR LOOP2 ENDIT: RTN ; RETURN EXIT END .