home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / MSGDP206.SZH / NORMAL.ASM < prev    next >
Assembly Source File  |  1990-07-30  |  6KB  |  172 lines

  1. ;
  2. ;
  3. ; assembler implementation of normalize for speed
  4. ;
  5. ; PUBLIC DOMAIN
  6. ;
  7. ;
  8.  
  9. EXTRN _rot13:word
  10.  
  11. public NORMALIZE
  12.  
  13. .model large
  14. .code
  15.  
  16. ROT00   DB      000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h
  17.     DB      008h, 009h, 00ah, 00bh, 00ch, 00dh, 00eh, 00fh
  18.     DB      010h, 011h, 012h, 013h, 014h, 015h, 016h, 017h
  19.     DB      018h, 019h, 01ah, 01bh, 01ch, 01dh, 01eh, 01fh
  20.     DB      020h, 021h, 022h, 023h, 024h, 025h, 026h, 027h
  21.     DB      028h, 029h, 02ah, 02bh, 02ch, 02dh, 02eh, 02fh
  22.     DB      030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h
  23.     DB      038h, 039h, 03ah, 03bh, 03ch, 03dh, 03eh, 03fh
  24.     DB      040h, 041h, 042h, 043h, 044h, 045h, 046h, 047h
  25.     DB      048h, 049h, 04ah, 04bh, 04ch, 04dh, 04eh, 04fh
  26.     DB      050h, 051h, 052h, 053h, 054h, 055h, 056h, 057h
  27.     DB      058h, 059h, 05ah, 05bh, 05ch, 05dh, 05eh, 05fh
  28.     DB      060h, 061h, 062h, 063h, 064h, 065h, 066h, 067h
  29.     DB      068h, 069h, 06ah, 06bh, 06ch, 06dh, 06eh, 06fh
  30.     DB      070h, 071h, 072h, 073h, 074h, 075h, 076h, 077h
  31.     DB      078h, 079h, 07ah, 07bh, 07ch, 07dh, 07eh, 07fh
  32.     DB      080h, 081h, 082h, 083h, 084h, 085h, 086h, 087h
  33.     DB      088h, 089h, 08ah, 08bh, 08ch, 08dh, 08eh, 08fh
  34.     DB      090h, 091h, 092h, 093h, 094h, 095h, 096h, 097h
  35.     DB      098h, 099h, 09ah, 09bh, 09ch, 09dh, 09eh, 09fh
  36.     DB      0a0h, 0a1h, 0a2h, 0a3h, 0a4h, 0a5h, 0a6h, 0a7h
  37.     DB      0a8h, 0a9h, 0aah, 0abh, 0ach, 0adh, 0aeh, 0afh
  38.     DB      0b0h, 0b1h, 0b2h, 0b3h, 0b4h, 0b5h, 0b6h, 0b7h
  39.     DB      0b8h, 0b9h, 0bah, 0bbh, 0bch, 0bdh, 0beh, 0bfh
  40.     DB      0c0h, 0c1h, 0c2h, 0c3h, 0c4h, 0c5h, 0c6h, 0c7h
  41.     DB      0c8h, 0c9h, 0cah, 0cbh, 0cch, 0cdh, 0ceh, 0cfh
  42.     DB      0d0h, 0d1h, 0d2h, 0d3h, 0d4h, 0d5h, 0d6h, 0d7h
  43.     DB      0d8h, 0d9h, 0dah, 0dbh, 0dch, 0ddh, 0deh, 0dfh
  44.     DB      0e0h, 0e1h, 0e2h, 0e3h, 0e4h, 0e5h, 0e6h, 0e7h
  45.     DB      0e8h, 0e9h, 0eah, 0ebh, 0ech, 0edh, 0eeh, 0efh
  46.     DB      0f0h, 0f1h, 0f2h, 0f3h, 0f4h, 0f5h, 0f6h, 0f7h
  47.     DB      0f8h, 0f9h, 0fah, 0fbh, 0fch, 0fdh, 0feh, 0ffh
  48.  
  49. ROT13   DB      000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h
  50.     DB      008h, 009h, 00ah, 00bh, 00ch, 00dh, 00eh, 00fh
  51.     DB      010h, 011h, 012h, 013h, 014h, 015h, 016h, 017h
  52.     DB      018h, 019h, 01ah, 01bh, 01ch, 01dh, 01eh, 01fh
  53.     DB      020h, 021h, 022h, 023h, 024h, 025h, 026h, 027h
  54.     DB      028h, 029h, 02ah, 02bh, 02ch, 02dh, 02eh, 02fh
  55.     DB      030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h
  56.     DB      038h, 039h, 03ah, 03bh, 03ch, 03dh, 03eh, 03fh
  57.     DB      040h, 04eh, 04fh, 050h, 051h, 052h, 053h, 054h
  58.     DB      055h, 056h, 057h, 058h, 059h, 05ah, 041h, 042h
  59.     DB      043h, 044h, 045h, 046h, 047h, 048h, 049h, 04ah
  60.     DB      04bh, 04ch, 04dh, 05bh, 05ch, 05dh, 05eh, 05fh
  61.     DB      060h, 06eh, 06fh, 070h, 071h, 072h, 073h, 074h
  62.     DB      075h, 076h, 077h, 078h, 079h, 07ah, 061h, 062h
  63.     DB      063h, 064h, 065h, 066h, 067h, 068h, 069h, 06ah
  64.     DB      06bh, 06ch, 06dh, 07bh, 07ch, 07dh, 07eh, 07fh
  65.     DB      080h, 081h, 082h, 083h, 084h, 085h, 086h, 087h
  66.     DB      088h, 089h, 08ah, 08bh, 08ch, 08dh, 08eh, 08fh
  67.     DB      090h, 091h, 092h, 093h, 094h, 095h, 096h, 097h
  68.     DB      098h, 099h, 09ah, 09bh, 09ch, 09dh, 09eh, 09fh
  69.     DB      0a0h, 0a1h, 0a2h, 0a3h, 0a4h, 0a5h, 0a6h, 0a7h
  70.     DB      0a8h, 0a9h, 0aah, 0abh, 0ach, 0adh, 0aeh, 0afh
  71.     DB      0b0h, 0b1h, 0b2h, 0b3h, 0b4h, 0b5h, 0b6h, 0b7h
  72.     DB      0b8h, 0b9h, 0bah, 0bbh, 0bch, 0bdh, 0beh, 0bfh
  73.     DB      0c0h, 0c1h, 0c2h, 0c3h, 0c4h, 0c5h, 0c6h, 0c7h
  74.     DB      0c8h, 0c9h, 0cah, 0cbh, 0cch, 0cdh, 0ceh, 0cfh
  75.     DB      0d0h, 0d1h, 0d2h, 0d3h, 0d4h, 0d5h, 0d6h, 0d7h
  76.     DB      0d8h, 0d9h, 0dah, 0dbh, 0dch, 0ddh, 0deh, 0dfh
  77.     DB      0e0h, 0e1h, 0e2h, 0e3h, 0e4h, 0e5h, 0e6h, 0e7h
  78.     DB      0e8h, 0e9h, 0eah, 0ebh, 0ech, 0edh, 0eeh, 0efh
  79.     DB      0f0h, 0f1h, 0f2h, 0f3h, 0f4h, 0f5h, 0f6h, 0f7h
  80.     DB      0f8h, 0f9h, 0fah, 0fbh, 0fch, 0fdh, 0feh, 0ffh
  81.  
  82. ROT10   DB      000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h
  83.     DB      008h, 009h, 00ah, 00bh, 00ch, 00dh, 00eh, 00fh
  84.     DB      010h, 011h, 012h, 013h, 014h, 015h, 016h, 017h
  85.     DB      018h, 019h, 01ah, 01bh, 01ch, 01dh, 01eh, 01fh
  86.     DB      020h, 050h, 051h, 052h, 053h, 054h, 055h, 056h
  87.     DB      057h, 058h, 059h, 05ah, 05bh, 05ch, 05dh, 05eh
  88.     DB      05fh, 060h, 061h, 062h, 063h, 064h, 065h, 066h
  89.     DB      067h, 068h, 069h, 06ah, 06bh, 06ch, 06dh, 06eh
  90.     DB      06fh, 070h, 071h, 072h, 073h, 074h, 075h, 076h
  91.     DB      077h, 078h, 079h, 07ah, 07bh, 07ch, 07dh, 07eh
  92.     DB      021h, 022h, 023h, 024h, 025h, 026h, 027h, 028h
  93.     DB      029h, 02ah, 02bh, 02ch, 02dh, 02eh, 02fh, 030h
  94.     DB      031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h
  95.     DB      039h, 03ah, 03bh, 03ch, 03dh, 03eh, 03fh, 040h
  96.     DB      041h, 042h, 043h, 044h, 045h, 046h, 047h, 048h
  97.     DB      049h, 04ah, 04bh, 04ch, 04dh, 04eh, 04fh, 050h
  98.     DB      051h, 052h, 053h, 054h, 055h, 056h, 057h, 058h
  99.     DB      059h, 05ah, 05bh, 05ch, 05dh, 05eh, 05fh, 060h
  100.     DB      061h, 062h, 063h, 064h, 065h, 066h, 067h, 068h
  101.     DB      069h, 06ah, 06bh, 06ch, 06dh, 06eh, 06fh, 070h
  102.     DB      071h, 072h, 073h, 074h, 075h, 076h, 077h, 078h
  103.     DB      079h, 07ah, 07bh, 07ch, 07dh, 07eh, 07fh, 080h
  104.     DB      081h, 082h, 083h, 084h, 085h, 086h, 087h, 088h
  105.     DB      089h, 08ah, 08bh, 08ch, 08dh, 08eh, 08fh, 090h
  106.     DB      091h, 092h, 093h, 094h, 095h, 096h, 097h, 098h
  107.     DB      099h, 09ah, 09bh, 09ch, 09dh, 09eh, 09fh, 0a0h
  108.     DB      0a1h, 0a2h, 0a3h, 0a4h, 0a5h, 0a6h, 0a7h, 0a8h
  109.     DB      0a9h, 0aah, 0abh, 0ach, 0adh, 0aeh, 0afh, 0b0h
  110.     DB      0b1h, 0b2h, 0b3h, 0b4h, 0b5h, 0b6h, 0b7h, 0b8h
  111.     DB      0b9h, 0bah, 0bbh, 0bch, 0bdh, 0beh, 0bfh, 0c0h
  112.     DB      0c1h, 0c2h, 0c3h, 0c4h, 0c5h, 0c6h, 0c7h, 0c8h
  113.     DB      0c9h, 0cah, 0cbh, 0cch, 0cdh, 0ceh, 0cfh, 0d0h
  114.  
  115.  
  116. NORMALIZE proc far
  117.  
  118.     push bp
  119.     mov bp,sp
  120.  
  121.     push di
  122.     push si
  123.     push ds
  124.  
  125.     cmp _rot13,1
  126.     je drot13
  127.     cmp _rot13,2
  128.     je drot10
  129.     mov bx,offset ROT00
  130.     jmp start
  131.  
  132. drot13: mov bx,offset ROT13
  133.     jmp start
  134.  
  135. drot10: mov bx,offset ROT10
  136.  
  137. start:  les di,[bp+6]
  138.     push es
  139.     pop ds
  140.     mov si,di
  141.  
  142. l1:     lodsb
  143.     cmp al,0
  144.     jz l3
  145.     cmp al,8dh
  146.     je l1
  147.     cmp al,0ah
  148.     je l1
  149.     cmp al,0dh
  150.     je l2
  151.     xlat cs:ROT00
  152.     stosb
  153.     jmp l1
  154.  
  155. l2:     mov al,0ah
  156.     xlat cs:ROT00
  157.     stosb
  158.     jmp l1
  159.  
  160. l3:     stosb
  161.  
  162.     pop ds
  163.     pop si
  164.     pop di
  165.  
  166.     pop bp
  167.     ret 4
  168.  
  169. NORMALIZE endp
  170.  
  171. end
  172.