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

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