home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / ftp.vapor.com / microdot-1 / md1_src_02.lzx / key.a < prev    next >
Text File  |  1989-08-24  |  2KB  |  135 lines

  1.  
  2.     section    "key",code
  3.  
  4.     ; a0 ^ ptr to key
  5.     ; a6 = reginfo
  6.  
  7. key:
  8.     bra.s    init
  9.     bra.s    fakecode
  10.     addq.w    #1,d1            ; 2
  11.     rts                        ; 2 = Zerospace fⁿr Checksum
  12. fakespace:
  13.     add.w    (a0),d0            ; 2
  14.     rts                        ; 2
  15.     move.l    #$eeeeaaaa,d2    ; 6
  16.     move.l    #$aaaaeeee,d1    ; 6
  17.     or.l    d2,d0            ; 2
  18.     or.l    d2,d1            ; 2
  19.     add.l    d1,d0            ; 2
  20.     rts                        ; 2 == 24 Bytes
  21.  
  22. fakecode:
  23.     movem.l    d2/d3/a2,-(sp)
  24. lll:
  25.     eor.l    d0,(a0)+
  26.     dbf    d1,lll
  27.     move.l    (a0),a2
  28.     movem.l    (a1)+,d0/d1/d2/d3
  29.     movem.l    d0/d1/d2/d3,-(a2)
  30.     movem.l    (sp)+,d2/d3/a2
  31.     rts
  32.  
  33.     
  34. cmpcrc:
  35.     move.l    4(sp),a0
  36.     eor.l    #$dc00dcf2,(a0)
  37.     cmp.l    #$9e6ee29f,d0
  38.     rts
  39. init:
  40.     moveq    #0,d1
  41.     pea        cmpcrc(pc)
  42.     move.l    (sp)+,4(a6)
  43.  
  44. ; test key integrity
  45.     move.l    -8(a0),d0    ; size 
  46.     asr.l    #2,d0
  47.     move.l    #$00000020,(a6)    ; Seriennummer
  48.     subq.w    #3,d0
  49. tl1:
  50.     add.l    (a0)+,d1
  51.     dbf        d0,tl1
  52.  
  53.     move.l    d1,12(a6)
  54.  
  55. ; d1 ist zero, wenn keyfile ok
  56.     lea    fakespace(pc),a0
  57.     move.l    #$80008008,(a0)+
  58.     move.l    #$40004004,(a0)+
  59. tl2:
  60.     clr.l    (a0)+
  61.     dbf        d1,tl2
  62.  
  63. ; init [REGISTRIERT]
  64.     lea    txt(pc),a0
  65.  
  66.     move.b    #0,19(a0)
  67.  
  68. ;    move.b    #'[',(a0)
  69. ;    move.b    #'R',1(a0)
  70. ;    move.b    #'E',2(a0)
  71. ;    move.b    #'G',3(a0)
  72. ;    move.b    #'I',4(a0)
  73. ;    move.b    #'S',5(a0)
  74. ;    move.b    #'T',6(a0)
  75. ;    move.b    #'E',7(a0)
  76. ;    move.b    #'R',8(a0)
  77. ;    move.b    #'E',9(a0)
  78. ;    move.b    #'D',10(a0)
  79. ;    move.b    #' ',11(a0)
  80. ;    move.b    #'0',12(a0)
  81. ;    move.b    #'0',13(a0)
  82. ;    move.b    #'F',14(a0)
  83. ;    move.b    #'A',15(a0)
  84. ;    move.b    #'0',16(a0)
  85. ;    move.b    #'0',17(a0)
  86. ;    move.b    #']',18(a0)
  87.  
  88.     move.b    #'I',4(a0)
  89.     move.b    #'E',2(a0)
  90.     move.b    #'G',3(a0)
  91.     move.b    #'T',6(a0)
  92.     move.b    #'S',5(a0)
  93.     move.b    #'E',7(a0)
  94.     move.b    #'E',9(a0)
  95.  
  96.     move.b    #' ',11(a0)
  97.     move.b    #'R',1(a0)
  98.     move.b    #'0',12(a0)
  99.     move.b    #'D',10(a0)
  100.  
  101.     move.b    #'0',17(a0)
  102.     move.b    #'2',16(a0)
  103.  
  104.  
  105.     move.b    #'[',(a0)
  106.     move.b    #'0',15(a0)
  107.     move.b    #']',18(a0)
  108.     move.b    #'0',13(a0)
  109.     move.l    a0,8(a6)
  110.     move.b    #'R',8(a0)
  111.     move.b    #'0',14(a0)
  112.  
  113.     rts
  114.  
  115. txt:
  116.     dc.w    $ac1d
  117.     dc.w    $ac1d
  118.     dc.w    $ac1d
  119.     dc.w    $ac1d
  120.  
  121.     move.l    d2,-(sp)
  122.     lea        256(a0),a1
  123.     move.l    #$a09fc872,d0
  124.     moveq    #63,d1
  125. l1:
  126.     move.l    (a0)+,d2
  127.     eor.l    d0,d2
  128.     move.l    d2,(a1)+
  129.     rol.l    #2,d0
  130.     dbf        d1,l1
  131.     move.l    (sp)+,d2
  132.     rts
  133.  
  134.     end
  135.