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: 
  19: crypt:
  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)+
  30: 1:
  31:         cmp     r0,$key+64.
  32:         bhis    1f
  33:         movb    (r1)+,(r0)+
  34:         bne     1b
  35: 1:
  36:         dec     r0
  37: /
  38: /
  39: /	fill out key space with clever junk
  40: /
  41:         mov     $key,r1
  42: 1:
  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)
  56: 2:
  57:         clr     r2
  58:         clr     (r4)
  59:         mov     $wheeldiv,r3
  60: 3:
  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)
  70: 4:
  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
  81: shift:  1;2;4;10;20;40;100;200;400;1000;2000;4000;10000;20000;40000;100000
  82:         1;2
  83: wheeldiv: 32.; 18.; 10.; 6.; 4.
  84: .bss
  85: cagecode: .=.+256.
  86: wheelcode: .=.+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
  97: 1:
  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
 111: 3:
 112:         mov     -(r3),r2
 113:         mov     $cage,r0
 114:         clr     r5
 115: 1:
 116:         bit     r2,(r0)+
 117:         beq     2f
 118:         incb    r5
 119: 2:
 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
 137: 1:
 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
 152: key:    .=.+128.
 153: word:   .=.+32.
 154: cage:   .=.+256.
 155: wheel:  .=.+256.

Defined functions

_crypt declared in line 6; defined in line 9; used 5 times
crypt declared in line 6; defined in line 19; used 2 times
  • in line 6, 14

Defined variables

cage defined in line 154; used 3 times
cagecode defined in line 85; used 2 times
key defined in line 152; used 6 times
shift defined in line 81; used 2 times
wheel defined in line 155; used 2 times
wheelcode defined in line 86; used 3 times
wheeldiv defined in line 83; used 3 times
word defined in line 153; used 3 times
Last modified: 1975-05-14
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1036
Valid CSS Valid XHTML 1.0 Strict