; rot13 in SJN. needs modified oisc.c to do character i/o. ; public domain 8/17/98 unSlider LOOP: CHAR CHAR .+1 ; read a character TEMP TEMP .+1 TEMP READC .+1 CHAR TEMP .+1 TEMP TEMP .+1 ; see if char<'A' TEMP UC .+1 TEMP CHAR NOTLTA ; if so, print without munging NEG1 ZERO PRINT NOTLTA: TEMP TEMP .+1 ; also skip the munge if char>'z' TEMP NLC .+1 TEMP CHAR PRINT ; if the char is >'Z', it must also be >='a', else we should leave it alone TEMP TEMP .+1 ; if it's >='a', we're ok TEMP LC .+1 TEMP CHAR DOROT TEMP TEMP .+1 ; else, it can't be >'Z' TEMP NUC .+1 TEMP CHAR PRINT DOROT: CHAR LUCKY .+1 ; subtract 13 ; if now <'A', or (<'a' but >('a'-14)), must add 26 TEMP TEMP .+1 ; if it's not >='A', we must add TEMP UC .+1 TEMP CHAR MAYBAD NEG1 ZERO DOADD MAYBAD: TEMP TEMP .+1 ; if it's >='a', we can go ahead and print TEMP LC .+1 TEMP CHAR PRINT TEMP TEMP .+1 ; if it's >('a'-14), we must add TEMP FOO .+1 TEMP CHAR DOADD NEG1 ZERO PRINT DOADD: CHAR CURSED .+1 ; add 26 PRINT: TEMP TEMP .+1 ; Write out our character TEMP CHAR .+1 WRITEC TEMP .+1 NEG1 ZERO LOOP ; Loop TEMP: 0 ; temporary storage CHAR: 0 ; buffer for character's positive ascii code NEG1: -1 ; constant ZERO: 0 ; constant LUCKY: 13 ; constant CURSED: -26 ; constant UC: -64 ; if 64-char<0, char >='A' NUC: -90 ; if 90-char<0, char >'Z' LC: -96 ; if 96-char<0, char >='a' NLC: -122 ; if 122-char<0, char >'z' FOO: -83 ; if 83-char<0, char >('a'-14)