CompuServe Thread

Your LCDIO.TXT

2 messages in this thread
#100375From: Tim PetersNov 13, 1985 1:50 AM
Mike, I really enjoyed your LCDIO writeup – excellent coverage & solid info. Thank you much for sharing it with us! A family of bitstring-reversal tricks I hope YOU enjoy: there's a faster way to reverse a byte than calling an ML subroutine: since there are only 256 values, the reversals can be PREcomputed and saved in a DATA stmnt to be read into a 256-element array (say, R%) at the program's start. Then, eg, replacing A% by its reversal is simply A%=R%(A%). If BLINDING speed is important, it's worth the space. I've used a variation of that trick in assembler on a mainframe to reverse 64bit words quickly: if a sequence S is a concatenation of sequence S1 and sequence S2, then the reverse of S is the reverse of S2 concatenated with the reverse of S1 (of course, the same idea can be applied recursively to S1 & S2, too; & so on). E.g., on the M100, a byte can be reversed by reversing its constituent nibbles individually & swapping them: 1 DIM R%(15) 2 DATA 0,8,4,12,2,'etc.: reversed nibbles 3 FOR I=0 TO 15:READ R%(I):NEXT Then byte A% can be reversed by: A%=R%(A%AND15)*16+R%(A%\16) More computation traded for less space, right? Fun stuff… obscurely y'rs – tim
#100506From: Mike SafonovNov 14, 1985 12:41 AM
THANKS FOR THE INFO. <<mike safonov>>