info-mac@utcsrgv.UUCP (info-mac) (05/08/84)
Date: 5 May 1984 23:36:26-MDT From: Dale Carstensen C-3 <uw-beaver!dlc@lanl> Reply-To: dlc@lanl To: info-mac@lanl Subject: Mactep for 7 bit, even parity About 10 years ago, the data communications people at the Los Alamos (then Scientific, now National) Laboratory decided to use parity on asynchronous lines, and even parity at that. It may have had to do with the default configuration of Texas Instruments "silent 700" terminals, or someone may have thought that bad lines could be determined by noticing high error rates (they never had time to seriously monitor lines no one was complaining about, because were complaining about so many other lines). But 7 bit, even parity, seems to be here to stay .. so ..Mactep does nothing about character length or parity in the "SCC," the Zilog or AMD 8530 chip in the Macintosh, and Mactep as sent over "info-mac" will not work on the Integrated Computer Network at the Los Alamos National Laboratory. I made some changes to Mactep so that it will work, and ran into enough problems that I think sharing the changes will save others a few hours, in the unlikely event their computer cares about parity. The main problem I had was guessing the bits to set in the 8530 write registers 3, 4, and 5. Particularly the D5 and D4 bits of WR4. One would think that the sync character length would make no difference when one is in asynchronous mode, but the changes didn't work until I set both of these bits, which is the code the table calls "external sync mode." It would have been so much easier if one could read these control registers, but I suppose it is already difficult to put the functions the 8530 has on a single chip. I also noticed that Motorola data sheets for the 68000 include assembler mnemonics for the instructions, but not the bit patterns in the instructions! I guess these sheets are still preliminary, or the Motorola technical writers could never figure out how to document the bit patterns. The 68120 has a very nice description, though. The mods I made follow -- one note is that I think odd parity, 7 bit characters can be selected by making the 77 in 9154 a 75. 9151 INPUT "7 bit even (Y/N)", BSC$ 9152 IF BSC$<>"Y" AND BSC$<>"y" THEN GOTO 9157 9153 R=3:X=&H41:WXCCB!=VARPTR(ML(0)):CALL WSCCB!(R,X) 9154 R=4:X=&H77:WSCCB!=VARPTR(ML(0)):CALL WSCCB!(R,X) 9155 R=5:X=&HAA:WSCCB!=VARPTR(ML(0)):CALL WSCCB!(R,X) 9156 GOTO 9160 9157 R=3:X=&HC1:WSCCB!=VARPTR(ML(0)):CALL WSCCB!(R,X) 9158 R=4:X=&H74:WSCCB!=VARPTR(ML(0)):CALL WSCCB!(R,X) 9159 R=5:X=&HEA:WSCCB!=VARPTR(ML(0)):CALL WSCCB!(R,X) Dale Carstensen (dlc@lanl-a, lanl-a!dlc, or denelcor!dcarst)