.title crypt .inclu "b:global" sect code Proc crypt, ; Returns r1 pointing to Var count, word ; the first byte of crybuf, where Var length, word ; the result is stored. Var hasptr, word Begin mov r2, -(sp) mov r3, -(sp) mov r4, -(sp) mov r0, -(sp) mov r1, -(sp) ;mov wordx(r5), r0 ;mov wordy(r5), r1 ;bpt mov strp(r5), r1 tstb (r1) bne 20$ 10$: jmp 999$ 20$: mov #CODLEN, count(r5) movb (r1)+, r2 mov r2, length(r5) cmp r2, #4. blo 10$ cmp r2, #CODLEN blos 30$ mov #CODLEN, r2 30$: mov r1, r3 mov #crybuf, r4 mov #allan, hasptr(r5) 40$: clr r0 bisb (r3)+, r0 beq 60$ sub #40, r0 bmi 10$ cmp r0, #'Z-40 blos 50$ sub #'a-'A, r0 50$: add hasptr(r5), r0 movb (r0), (r4)+ 60$: sob r2, 40$ sub length(r5), count(r5) ble 100$ mov r1, r3 add length(r5), hasptr(r5) mov length(r5), r2 cmp r2, count(r5) blos 40$ mov count(r5), r2 br 40$ 100$: mov #crybuf, r1 mov #30047., r4 mov 6(r1), crybuf-4 mov 10(r1), crybuf-2 mov (r1), cryend mov 2(r1), cryend+2 mov #crybuf-4, r1 110$: call rola mov 2(r1), r0 com r0 mov wordY(r5), r2 xor r2, r0 mov (r1), r2 xor r2, r0 mov r0, (r1) mov 4(r1), r0 mov wordX(r5), r2 xor r2, r0 add r0, (r1) mov (r1), r0 mov wordX(r5), r2 xor r2, r0 clr r2 mov r4, r3 div r0, r2 add r3, r4 add r4, wordY(r5) add #2, r1 cmp r1, #cryend blo 110$ mov #crybuf, (sp) tst (pc)+ 999$: sec mov (sp)+, r1 mov (sp)+, r0 mov (sp)+, r4 mov (sp)+, r3 mov (sp)+, r2 ret rola: mov length(r5), r0 ash #4, r0 add wordY(r5), r0 mov #188., r2 ; 12345847 mov #25079., r3 div r0, r2 clr r2 add wordX(r5), r3 div #30., r2 inc r3 tst 2(r1) bpl 50$ sec 50$: ror (r1) ror (r1) ror 2(r1) ror 2(r1) sob r3, 50$ adc (r1) rts pc allan: .byte 7., 43., 195., 17., 130., 111., 5., 50., 0., 59. .byte 100., 66., 2., 183., 57., 227., 81., 219., 78., 21. .byte 193., 200., 225., 57., 98., 68., 39., 128., 159., 59. .byte 194., 126., 26., 42., 15., 222., 176., 78., 161., 6. .byte 115., 122., 207., 145., 24., 109., 187., 134., 142., 153. .byte 149., 27., 90., 38., 182., 243., 72., 29., 32., 184. .byte 48., 162., 25., 220., 76., 7., 117., 128., 221., 171. .byte 56., 70., 169., 131., 26., 252., 2., 32., 177., 6. .byte 228., 35., 193., 73., 236., 242., 93., 164., 144., 152. .byte 130., 173., 116., 164., 191., 174., 90., 244., 142., 183. .byte 73., 68., 1., 157., 166., 96., 96., 220., 198., 228. .byte 94., 40., 160., 90., 116., 144., 73., 158., 31., 38. .even .end