Research V7 development
[unix-history] / .ref-Research-V6 / usr / source / s3 / crypt.s
CommitLineData
6b92951c
KT
1/ crypt -- password incoding
2
3/ mov $key,r0
4/ jsr pc,crypt
5
6.globl crypt, _crypt
7.globl savr5
8
9_crypt:
10 mov r5,-(sp)
11 mov sp,r5
12 mov r5,savr5
13 mov 4(r5),r0
14 jsr pc,crypt
15 clr savr5
16 mov (sp)+,r5
17 rts pc
18
19crypt:
20 mov r1,-(sp)
21 mov r2,-(sp)
22 mov r3,-(sp)
23 mov r4,-(sp)
24 mov r5,-(sp)
25
26 mov r0,r1
27 mov $key,r0
28 movb $004,(r0)+
29 movb $034,(r0)+
301:
31 cmp r0,$key+64.
32 bhis 1f
33 movb (r1)+,(r0)+
34 bne 1b
351:
36 dec r0
37/
38/
39/ fill out key space with clever junk
40/
41 mov $key,r1
421:
43 movb -1(r0),r2
44 movb (r1)+,r3
45 xor r3,r2
46 movb r2,(r0)+
47 cmp r0,$key+128.
48 blo 1b
49/
50/
51/ establish wheel codes and cage codes
52/
53 mov $wheelcode,r4
54 mov $cagecode,r5
55 mov $256.,-(sp)
562:
57 clr r2
58 clr (r4)
59 mov $wheeldiv,r3
603:
61 clr r0
62 mov (sp),r1
63 div (r3)+,r0
64 add r1,r2
65 bic $40,r2
66 bis shift(r2),(r4)
67 cmp r3,$wheeldiv+6.
68 bhis 4f
69 bis shift+4(r2),(r5)
704:
71 cmp r3,$wheeldiv+10.
72 blo 3b
73 sub $2,(sp)
74 tst (r4)+
75 tst (r5)+
76 cmp r4,$wheelcode+256.
77 blo 2b
78 tst (sp)+
79/
80.data
81shift: 1;2;4;10;20;40;100;200;400;1000;2000;4000;10000;20000;40000;100000
82 1;2
83wheeldiv: 32.; 18.; 10.; 6.; 4.
84.bss
85cagecode: .=.+256.
86wheelcode: .=.+256.
87.text
88/
89/
90/ make the internal settings of the machine
91/ both the lugs on the 128 cage bars and the lugs
92/ on the 16 wheels are set from the expanded key
93/
94 mov $key,r0
95 mov $cage,r2
96 mov $wheel,r3
971:
98 movb (r0)+,r1
99 bic $!177,r1
100 asl r1
101 mov cagecode(r1),(r2)+
102 mov wheelcode(r1),(r3)+
103 cmp r0,$key+128.
104 blo 1b
105/
106/
107/ now spin the cage against the wheel to produce output.
108/
109 mov $word,r4
110 mov $wheel+128.,r3
1113:
112 mov -(r3),r2
113 mov $cage,r0
114 clr r5
1151:
116 bit r2,(r0)+
117 beq 2f
118 incb r5
1192:
120 cmp r0,$cage+256.
121 blo 1b
122/
123/ we have a piece of output from current wheel
124/ it needs to be folded to remove lingering hopes of
125/ inverting the function
126/
127 mov r4,-(sp)
128 clr r4
129 div $26.+26.+10.,r4
130 add $'0,r5
131 cmp r5,$'9
132 blos 1f
133 add $'A-'9-1,r5
134 cmp r5,$'Z
135 blos 1f
136 add $'a-'Z-1,r5
1371:
138 mov (sp)+,r4
139 movb r5,(r4)+
140 cmp r4,$word+8.
141 blo 3b
142/
143
144 mov (sp)+,r5
145 mov (sp)+,r4
146 mov (sp)+,r3
147 mov (sp)+,r2
148 mov (sp)+,r1
149 mov $word,r0
150 rts pc
151.bss
152key: .=.+128.
153word: .=.+32.
154cage: .=.+256.
155wheel: .=.+256.