LOGPB - PUT BYTE IN OUTPUT BUFF MACRO M1110 11-APR-78 07:36 PAGE 4 1 .TITLE LOGPB - PUT BYTE IN OUTPUT BUFFER 2 .IDENT /01.00/ 3 .LIST MEB 4 ; 5 ; AUTHOR: H. L. COLEMAN 6 ; MILLIKEN AND COMPANY 7 ; P. O. BOX 1926 8 ; MAIL STOP M-103 9 ; SPARTANBURG, S. C. 29304 10 ; (803)573-2556 11 ; 12 ; VERSION: 01.00 13 ; 14 ; DATE: 30-MAR-78 15 ; 16 ; MODIFICATIONS: 17 ; 18 ; FUNCTION: PUT ONE CHARACTER IN OUTPUT BUFFER AND MAINTAIN CONTROL 19 ; OVER VFC. 20 ; 21 ; INPUT: 22 ; 23 ; R0 = CHARACTER 24 ; R4 = COUNT REMAINING IN OUTPUT BUFFER 25 ; R5 = A(POSITION IN OUTPUT BUFFER) 26 ; 27 ; OUTPUT: 28 ; 29 ; OUTPUT BUFFER UPDATED 30 ; R4 = UPDATED 31 ; R5 = UPDATED 32 ; LINCNT = UPDATED 33 ; LOGPB - PUT BYTE IN OUTPUT BUFF MACRO M1110 11-APR-78 07:36 PAGE 5 35 ; MACRO CALLS AND SYSTEM DEFINITIONS 36 ; 37 .MCALL WTSE$S,CLEF$S,MSGN$S,WRITE$ 38 .MCALL FDOF$L,NBOF$L,FCSBT$ 39 000000 FDOF$L ;DEFINE FDB OFFSETS 40 000000 NBOF$L ;DEFINE FNB OFFSETS 41 000000 FCSBT$ ;DEFINE FCS BITS LOGPB - PUT BYTE IN OUTPUT BUFF MACRO M1110 11-APR-78 07:36 PAGE 6 43 000000 110067 000000G $LOGPB::MOVB R0,CHAR ;SAVE CHARACTER 44 000004 122767 000040 000000G CMPB #40,CHAR ;SPECIAL CHARACTER 45 000012 101466 BLOS 1100$ ;IF LOS, NO - THATS EASY 46 000014 105767 000000G TSTB CHAR ;NULL ? 47 000020 001463 BEQ 1100$ ;IF EQ, YES - THAT'S EASY TOO 48 000022 122767 000012 000000G CMPB #12,CHAR ;LINE FEED ? 49 000030 001014 BNE 1000$ ;IF NE, NO - KEEP TRYING 50 000032 005267 000000G INC LINCNT ;BUMP LINE COUNT 51 000036 022767 000074 000000G CMP #60.,LINCNT ;PAGE OVERFLOW ? 52 000044 003051 BGT 1100$ ;IF GT, NO 53 000046 005067 000000G CLR LINCNT ;RESET COUNT 54 000052 112767 000014 000000G MOVB #14,CHAR ;CONVERT TO FORM FEED 55 000060 000443 BR 1100$ ;GO DO IT 56 000062 122767 000011 000000G 1000$: CMPB #11,CHAR ;TAB ? 57 000070 001437 BEQ 1100$ ;IF EQ, YES - THAT'S EASY AGAIN 58 000072 122767 000014 000000G CMPB #14,CHAR ;FORM FEED ? 59 000100 001003 BNE 1150$ ;IF NE, NO - LOOK SOME MORE 60 000102 005067 000000G CLR LINCNT ;RESET COUNT 61 000106 000430 BR 1100$ ;GO DO IT 62 000110 122767 000015 000000G 1150$: CMPB #15,CHAR ;CARRIAGE RETURN ? 63 000116 001424 BEQ 1100$ ;IF EQ, YES - ANOTHER EASY ONE 64 000120 112700 000136 MOVB #'^,R0 ;INSERT "^" 65 000124 CALL PUTBYT ;INSERT IN OUTPUT BUFFER 000124 004767 000052 JSR PC,PUTBYT 66 000130 152767 000100 000000G BISB #100,CHAR ;MAKE IT PRINTABLE 67 000136 116700 000000G MOVB CHAR,R0 ;R0 = CHARACTER 68 000142 CALL PUTBYT ;INSERT IN OUTPUT BUFFER 000142 004767 000034 JSR PC,PUTBYT 69 000146 112700 000015 MOVB #15,R0 ;R0 = "CR" 70 000152 CALL PUTBYT ;INSERT IN OUTPUT BUFFER 000152 004767 000024 JSR PC,PUTBYT 71 000156 112700 000012 MOVB #12,R0 ;R0 = "LF" 72 000162 CALL PUTBYT ;INSERT IN OUTPUT BUFFER 000162 004767 000014 JSR PC,PUTBYT 73 000166 RETURN ;RETURN TO CALLER 000166 000207 RTS PC 74 000170 116700 000000G 1100$: MOVB CHAR,R0 ;R0 = CHARACTER 75 000174 CALL PUTBYT ;PUT IT IN OUTPUT BUFFER 000174 004767 000002 JSR PC,PUTBYT 76 000200 RETURN ;RETURN TO CALLER 000200 000207 RTS PC LOGPB - PUT BYTE IN OUTPUT BUFF MACRO M1110 11-APR-78 07:36 PAGE 7 78 ; PUTBYT - SUBROUTINE TO PUT BYTE IN OUTPUT BUFFER AND WRITE THE BUFFER 79 ; WHEN REQUIRED. 80 ; 81 ; INPUT: 82 ; 83 ; R0 = CHARACTER 84 ; R4 = COUNT REMAINING IN OUTPUT BUFFER 85 ; R5 = A(POSITION IN OUTPUT BUFFER) 86 ; 87 ; OUTPUT: 88 ; 89 ; R4 = UPDATED 90 ; R5 = UPDATED 91 ; BUFFER WRITTEN IF REQUIRED 92 ; 93 000202 110025 PUTBYT: MOVB R0,(R5)+ ;MOVE CHARACTER TO OUTPUT BUFFER 94 000204 005304 DEC R4 ;ADJUST COUNT 95 000206 001065 BNE 1400$ ;IF NE, NOT FULL YET 96 000210 005767 000000G 1000$: TST LIOSB ;HAS LAST WRITE COMPLETED ? 97 000214 001013 BNE 1100$ ;IF NE, YES - GO WRITE BLOCK 98 000216 WTSE$S #2 ;WAIT FOR WRITE 000216 012746 000002 MOV #2,-(SP) 000222 012746 MOV (PC)+,-(SP) 000224 051 002 .BYTE 41.,2 000226 104377 EMT ^O<377> 99 000230 CLEF$S #2 ;CLEAR FLAG 000230 012746 000002 MOV #2,-(SP) 000234 012746 MOV (PC)+,-(SP) 000236 037 002 .BYTE 31.,2 000240 104377 EMT ^O<377> 100 000242 000762 BR 1000$ ;TRY AGAIN 101 000244 100025 1100$: BPL 1300$ ;IF PL, NO ERROR 102 000246 1200$: MSGN$S PFX,3,M007,,,ABORT ;I-O ERROR ON LOG FILE 000246 004567 000000G JSR R5,$MSGEN ;GO TO MESSAGE GEN ROUTINE 000252 000000G .IIF NB .WORD PFX ;A(MESSAGE PREFIX) 000254 000003 .WORD 3 ;SEVERITY LEVEL 000256 000000G .IIF NB .WORD M007 ;A(MESSAGE TEXT) 000260 000000 000000 .IIF B <> .WORD 0,0 ;NO REPLY 000264 103002 BCC .+6 000266 004767 000000G JSR PC,ABORT 103 000272 CALL $LOGER ;TELL HIM MORE 000272 004767 000000G JSR PC,$LOGER 104 000276 016700 000000G MOV TTUCB,R0 ;R0 = A(TERMINAL UCB) 105 000302 005060 000000G CLR TTLOG(R0) ;TURN OFF LOGGING 106 000306 016705 000000G MOV CURBUF,R5 ;RESET 107 000312 012704 001000 MOV #512.,R4 ;RESET 108 000316 RETURN ;RETURN TO CALLER 000316 000207 RTS PC 109 000320 1300$: WRITE$ #LOGFL,CURBUF ;WRITE THE BUFFER 000320 012700 000000G MOV #LOGFL,R0 000324 016760 000000G 000022 .IIF NB,CURBUF, MOV CURBUF,F.BKDS+2(R0) 000332 004767 000000G JSR PC,.WRITE 110 000336 103743 BCS 1200$ ;IF CS, ERROR 111 000340 016705 000000G MOV NXTBUF,R5 ;R5 = A(NEW BUFFER) 112 000344 016767 000000G 000000G MOV CURBUF,NXTBUF ;RESET NEXT BUFFER 113 000352 010567 000000G MOV R5,CURBUF ;SET CURRENT BUFFER 114 000356 012704 001000 MOV #512.,R4 ;SET NEW COUNT LOGPB - PUT BYTE IN OUTPUT BUFF MACRO M1110 11-APR-78 07:36 PAGE 7-1 115 000362 1400$: RETURN ;RETURN TO CALLER 000362 000207 RTS PC 116 000001 .END LOGPB - PUT BYTE IN OUTPUT BUFF MACRO M1110 11-APR-78 07:36 PAGE 7-2 SYMBOL TABLE ABORT = ****** GX FD.F11= 040000 F.EFBK= 000010 LINCNT= ****** GX R$$SND= 000000 A$$CHK= 000000 FD.INS= 000010 F.EFN = 000050 LIOSB = ****** GX R$$11M= 000000 A$$CPS= 000000 FD.ISP= 002000 F.EOBB= 000032 LOGFL = ****** GX R$$6OF= 000000 A$$NSI= 000000 FD.MNT= 100000 F.ERR = 000052 L$$ASG= 000000 R$$611= 000001 A$$PRI= 000000 FD.OSP= 004000 F.FACC= 000043 L$$PTO= 000017 R.FIX = 000001 A$$TRP= 000000 FD.PLC= 000004 F.FFBY= 000014 L$$P11= 000001 R.SEQ = 000003 CHAR = ****** GX FD.PRN= 000004 F.FNAM= 000110 M$$CRB= 000124 R.VAR = 000002 CH.AND= 000001 FD.PSE= 010000 F.FNB = 000102 M$$CRX= 000000 S$$ECC= 000000 CURBUF= ****** GX FD.RAH= 000001 F.FTYP= 000116 M$$FCS= 000000 S$$YSZ= 007600 C$$CDA= 000005 FD.RAN= 000002 F.FVER= 000120 M$$MGE= 000000 S.FATT= 000016 C$$CKP= 000000 FD.REC= 000001 F.HIBK= 000004 M$$OVR= 000000 S.FDB = 000140 C$$CSR= 000000 FD.RWM= 000001 F.LUN = 000042 M007 = ****** GX S.FNAM= 000006 C$$ORE= 002000 FD.SDI= 000020 F.MBCT= 000054 NB.DEV= 000200 S.FNB = 000036 C$$RSH= 177564 FD.SQD= 000040 F.MBC1= 000055 NB.DIR= 000100 S.FNBW= 000017 C$$RTO= 000017 FD.TTY= 000004 F.MBFG= 000056 NB.NAM= 000004 S.FNTY= 000004 C$$RUN= 000000 FD.WBH= 000002 F.NRBD= 000024 NB.SD1= 000400 S.FTYP= 000002 C$$R11= 000001 FF.CHR= 000005 F.NREC= 000030 NB.SD2= 001000 S.NFEN= 000020 C$$TTY= 177564 FF.NV = 000003 F.OVBS= 000030 NB.SNM= 000040 TTLOG = ****** GX D$$ISK= 000000 FF.POE= 000002 F.RACC= 000016 NB.STP= 000020 TTUCB = ****** GX D$$L11= 000002 FF.RWD= 000001 F.RATT= 000001 NB.SVR= 000010 T$$ACR= 000000 D$$YNC= 000000 FF.RWF= 000006 F.RCNM= 000034 NB.TYP= 000002 T$$BTW= 000000 D$$YNM= 000000 FF.SPC= 000004 F.RCTL= 000017 NB.VER= 000001 T$$BUF= 000000 E$$XPR= 000000 FO.APD= 000106 F.RSIZ= 000002 NXTBUF= ****** GX T$$CCO= 000000 FA.APD= 000100 FO.MFY= 000002 F.RTYP= 000000 N$$LDV= 000001 T$$CTR= 000000 FA.CRE= 000010 FO.RD = 000001 F.SEQN= 000100 N$$MOV= 000041 T$$J16= 000001 FA.DLK= 001000 FO.UPD= 000006 F.SPDV= 000072 N.DID = 000024 T$$KMG= 000000 FA.ENB= 100000 FO.WRT= 000016 F.SPUN= 000074 N.DVNM= 000032 T$$LWC= 000000 FA.EXC= 002000 F$$LVL= 000001 F.STBK= 000036 N.FID = 000000 T$$RNE= 000000 FA.EXT= 000004 F.ACTL= 000076 F.UNIT= 000136 N.FNAM= 000006 T$$RPR= 000000 FA.NSP= 000100 F.ALOC= 000040 F.URBD= 000020 N.FTYP= 000014 T$$RUB= 000000 FA.POS= 010000 F.BBFS= 000062 F.VBN = 000064 N.FVER= 000016 T$$SYN= 000000 FA.RD = 000001 F.BDB = 000070 F.VBSZ= 000060 N.NEXT= 000022 T$$TRW= 000000 FA.RWD= 004000 F.BGBC= 000057 G$$TPP= 000000 N.STAT= 000020 T$$VBF= 000000 FA.SEQ= 040000 F.BKDN= 000026 G$$TSS= 000000 N.UNIT= 000034 V$$CTR= 001000 FA.SHR= 000040 F.BKDS= 000020 G$$TTK= 000000 PAR$$$= 000027 V$$RSN= 000031 FA.TMP= 000020 F.BKEF= 000050 H$$RTZ= 000074 PFX = ****** GX $LOGER= ****** GX FA.WCK= 020000 F.BKP1= 000051 I$$RAR= 000000 PUTBYT 000202R $LOGPB 000000RG FA.WRT= 000002 F.BKST= 000024 I$$RDN= 000000 P$$RFL= 000000 $MSGEN= ****** GX FD.BLK= 000010 F.BKVB= 000064 K$$CNT= 177546 P$$RTY= 000000 $T$LOG= 000000 FD.CCL= 000002 F.CHR = 000075 K$$CSR= 177546 Q$$OPT= 000005 $$$T1 = 000067 FD.COM= 020000 F.CNTG= 000034 K$$IEN= 000115 R$$JPO= 000000 .WRITE= ****** G FD.CR = 000002 F.DFNB= 000046 K$$LDC= 000001 R$$JP1= 000001 ...GBL= 000000 FD.DIR= 000010 F.DSPT= 000044 K$$TPS= 000074 R$$K11= 000001 ...TPC= 000140 FD.FTN= 000001 F.DVNM= 000134 . ABS. 000000 000 000364 001 ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 4441 WORDS ( 18 PAGES) DYNAMIC MEMORY: 5836 WORDS ( 22 PAGES) ELAPSED TIME: 00:00:19 LOGPB,[203,34]LOGPB/CR=[1,1]EXEMC/ML,[202,1]MAC/ML,[203,1]RSXMC/PA:1,LOGPB LOGPB CREATED BY MACRO ON 11-APR-78 AT 07:36 PAGE 1 SYMBOL CROSS REFERENCE CREF V01 SYMBOL VALUE REFERENCES ABORT = ****** GX 7-102 7-102 CHAR = ****** GX *6-43 6-44 6-46 6-48 *6-54 6-56 6-58 6-62 *6-66 6-67 6-74 CURBUF = ****** GX 7-106 7-109 7-112 *7-113 F.BKDS = 000020 *7-109 LINCNT = ****** GX *6-50 6-51 *6-53 *6-60 LIOSB = ****** GX 7-96 LOGFL = ****** GX 7-109 7-109 M007 = ****** GX 7-102 NXTBUF = ****** GX 7-111 *7-112 PAR$$$ = 000027 #7-109 7-109 PFX = ****** GX 7-102 PUTBYT 000202 R 6-65 6-68 6-70 6-72 6-75 #7-93 TTLOG = ****** GX *7-105 TTUCB = ****** GX 7-104 $LOGER = ****** GX 7-103 $LOGPB 000000 RG #6-43 $MSGEN = ****** GX 7-102 $$$T1 = 000067 #7-102 7-102 7-102 7-102 .WRITE = ****** G 7-109 7-109 LOGPB CREATED BY MACRO ON 11-APR-78 AT 07:36 PAGE 2 MACRO CROSS REFERENCE CREF V01 MACRO NAME REFERENCES CALL #6-65 #6-68 #6-70 #6-72 #6-75 #7-102 #7-103 CLEF$S #5-37 #7-99 CMOV$B #7-109 7-109 CMOV$W #7-109 #7-109 #7-109 #7-109 #7-109 CMOV$2 #7-109 #7-109 DIR$ #7-98 #7-98 #7-99 #7-99 ERR$ #7-102 7-102 #7-109 7-109 FCSBT$ #5-38 5-41 FDBK$R #7-109 #7-109 FDOFF$ #5-39 5-39 FDOF$L #5-38 #5-39 LDFDB$ #7-109 7-109 MOV$ #7-98 7-98 #7-99 7-99 MSGN$S #5-37 7-102 NBOFF$ #5-40 5-40 NBOF$L #5-38 #5-40 RETURN 6-73 6-76 7-108 7-115 WRITE$ #5-37 7-109 WTSE$S #5-37 #7-98