C PROGRAM BMFAST.FT C ---------------- C S ENTRY BMFAST S CPAGE 2 S BMFAST,BLOCK 2 C C PETER LEMKIN C IMAGE PROCESSING UNIT, DCBD C NATIONAL CANCER INSTITUTE C NATIONAL INSTITUTES OF HEALTH C 9000 ROCKVILLE PIKE C BETHESDA, MD. 20014 C C OCT 5, 1976 C ------- C OPDEFS C ------ S OPDEF TADI 1400 S OPDEF DCAI 3400 C C S OPDEF DISP1 6435 S OPDEF DISP2 6436 C S OPDEF SWAB 7431 S OPDEF SWBA 7447 S OPDEF DAD 7443 S OPDEF DST 7445 S OPDEF DPSZ 7451 S OPDEF DCM 7575 S OPDEF DPIC 7573 S OPDEF MUY 7405 S OPDEF DVI 7407 C S OPDEF CAM 7621 S OPDEF MQA 7501 S OPDEF MQL 7421 S OPDEF BSW 7002 C C C S OPDEF EXADR 6450 S OPDEF EXIN 6333 C [2] PROCES LOOP C C 104 IW1=0 IW2=0 K3LINES=-1 C C DO 100 IY1=KY1,KY2 IY=IY1-1 C S TAD \IY S DISP2 /PUT BMY ADDRESS IN RIGHT LED'S C C C TEST IF PAGE IN 3 PACKED LINES S ISZ \K3LINE S JMP \110 /NO C C YES, RESET COUNTERS AND GET 3 LINES K3LINES=-3 K3BYTES=1 KPTR=0 MEM=IBM1 IBYTE=IHGH1 CALL T3BUF(IBUF1,0) C C TEST FOR TTY EXIT ETC. S CPAGE 3 S\110, JMS TTYCTL /TEST FOR TTY INPUTS S JMP \2047 /ERROR RETURN: ABORT C DO 100 IX1=KX1,KX2 IX=IX1-1 S TAD \IX S DISP1 /PUT BMX ADDRESS IN LEFT LED'S C C GET THE I1 ARG FOR 3/2 HIGH SPPED BUFFER C GET SPECIFIC BYTE GOTO(111,112,113),K3BYTES C C GET 1ST BYTE S \111, CLA CMA S TAD PBUF1 S CPAGE 7 S TAD \KPTR S DCA 11 S TADI 11 S MQL S TADI 11 S DCA \IW2 S MQA S DCA \IW1 KPTR=KPTR+2 C S TAD \IW1 S AND (377 S DCA \IZ GOTO 114 C C GET 2ND BYTE S \112, TAD \IW2 S AND (377 S DCA \IZ GOTO 114 C C GET 3RD BYTE S \113, TAD \IW2 S RTL; RTL; RAL S AND (0017 S MQL S TAD \IW1 S RTR; RTR S AND (0360 S MQA S DCA \IZ K3BYTES=0 C INCREMENT POINTER 114 K3BYTES=K3BYTES+1 C C [3] CLIP THE RESULT 101 CONTINUE S CLA S TAD \IZ S SMA S JMP \108 /IT IS <0 ==> >2047 SO MAP TO 255 S TAD (D255 C S\108, TAD (-D255 S SMA S CLA /CLIP AT 255 S TAD (D255 S DCA \IZ C C C [4] TST IF COMPLEMENT S TAD \KOMP S SNA CLA S JMP \107 IZ=255-IZ C C C C [5] SAVE THE RESULT C PACK INTO TRIPLE LINE BUFFER AND WRITE OUT WHEN KPTR=512 107 CONTINUE S TAD \IZ S AND (377 S DCA \IZ MEM=JBM IBYTE=JHGH CALL PACK2D C 100 CONTINUE C C C S\2047, RETRN BMFAST C C ************************************************************ C SUBROUTINE: T T Y C T L (INTERNAL) C ************************************************************ C S CPAGE 3 S RTTYC, JMP I TTYCTL S TTYCTL, 0000 /ENTRY C S KSF /ANYTHING TYPED S JMP NORMAL /NO, RETURN NORMALLY S KRB /GET TYPED CHARACTER S AND (0177 /TAKE CARE OF PARITY PROBLEMS S TAD (-17 /TEST FOR CTRL/O S SNA /SKIP IF NOT CTRL/O S JMP RTTYC /ABORT CALLING ROUTINE (ERROR RETURN) S TAD (-4 /TEST FOR CTRL/S [-17-4=-23(OCTAL)] S SZA CLA /SKIP IF CTRL/S S JMP NORMAL /NOT CTRL/O OR CTRL/S SO RETURN NORMALLY C S SLEEP,KSF /WAIT FOR CTRL/Q S JMP SLEEP /KEEP WAITING S KRB /READ CHARACTER S AND (0177 S TAD (-17 /IS IT A CTRL/O? S SNA /SKIP IF NOT S JMP RTTYC /YES, ABORT S TAD (-2 /TEST FOR CTRL/Q (-17-2=-21 OCTAL) S SZA CLA /SKIP IF SO S JMP SLEEP /NOPE, KEEP SLEEPING C S NORMAL,INC TTYCTL /INCREMENT RETURN ADDRESS FOR NORMAL RETURN S CLA /SAFETY VALVE S JMP RTTYC /RETURN C C C *********PARAMETERS****** S PBUF1, \IBUF1 END