35 lines
871 B
Text
35 lines
871 B
Text
// main registers
|
|
p IS $255 % text pointer
|
|
c GREG % char
|
|
cc GREG % uppercase copy of c
|
|
u GREG % all purpose
|
|
|
|
LOC Data_Segment
|
|
GREG @
|
|
Test BYTE "dit is een bericht voor de keizer",#a,0
|
|
|
|
LOC #100
|
|
Main LDA p,Test
|
|
TRAP 0,Fputs,StdOut % show text to encrypt
|
|
LDA p,Test % points to text to encrypt
|
|
JMP 4F
|
|
// do in place text encryption
|
|
% REPEAT
|
|
2H ADD cc,c,0 % copy char
|
|
SUB cc,cc,' ' % make uppercase
|
|
CMP u,cc,'A'
|
|
BN u,3F % IF c < 'A' OR c > 'Z' THEN next char
|
|
CMP u,cc,'Z'
|
|
BP u,3F
|
|
CMP u,cc,'N' % ELSE
|
|
BN u,1F % IF c < 'N' THEN encrypt 'up'
|
|
SUB c,c,26 % ELSE char ready for encrypt 'down'
|
|
1H INCL c,13 % encrypt char
|
|
STBU c,p % replace char with encrypted char
|
|
3H INCL p,1 % move to next char
|
|
4H LDBU c,p % get next char
|
|
PBNZ c,2B % UNTIL EOT
|
|
// print result
|
|
LDA p,Test
|
|
TRAP 0,Fputs,StdOut % show encrypted text
|
|
TRAP 0,Halt,0
|