; ********************************************* 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
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