home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / txtutl / asc2ebc.arc / ASC2EBC.ASM next >
Assembly Source File  |  1985-09-09  |  4KB  |  74 lines

  1. ; ASC2EBC.ASM -- Program to convert an ASCII file to EBCDIC
  2.  
  3. ; Usage -- A> ASC2EBC < input filespec > output filespec
  4.  
  5. ; From PC Mag 10-1-85
  6.  
  7.  
  8. CSEG            Segment
  9.                 Assume  CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
  10.                 Org     0100h
  11. Entry:          Jmp     Begin
  12.  
  13. Table           db      000H,001H,002H,003H,037H,02DH,02EH,02FH
  14.                 db      016H,005H,025H,00BH,00CH,00DH,00EH,00FH
  15.                 db      010H,011H,012H,013H,03CH,03DH,032H,026H
  16.                 db      018H,019H,03FH,027H,022H,01DH,01EH,01FH
  17.                 db      040H,05AH,07FH,07BH,05BH,06CH,050H,07DH
  18.                 db      04DH,05DH,05CH,04EH,06BH,060H,04BH,061H
  19.                 db      0F0H,0F1H,0F2H,0F3H,0F4H,0F5H,0F6H,0F7H
  20.                 db      0F8H,0F9H,07AH,05EH,04CH,07EH,06EH,06FH
  21.                 db      07CH,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7H
  22.                 db      0C8H,0C9H,0D1H,0D2H,0D3H,0D4H,0D5H,0D6H
  23.                 db      0D7H,0D8H,0D9H,0E2H,0E3H,0E4H,0E5H,0E6H
  24.                 db      0E7H,0E8H,0E9H,0ADH,0E0H,0BDH,08AH,06DH
  25.                 db      07DH,081H,082H,083H,084H,085H,086H,087H
  26.                 db      088H,089H,091H,092H,093H,094H,095H,096H
  27.                 db      097H,098H,099H,0A2H,0A3H,0A4H,0A5H,0A6H
  28.                 db      0A7H,0A8H,0A9H,0C0H,04FH,0D0H,0A1H,007H
  29.  
  30. Begin:          Cld                             ; Direction Forward
  31.                 Mov     DX,Offset EndProg       ; Beyone end of program
  32.                 Mov     CX,SP                   ; Top of segment
  33.                 Sub     CX,100h                 ; Leave foom for stack
  34.                 Sub     CX,DX                   ; Number of bytes for buffer
  35.  
  36. MainLoop:       Mov     BX,0                    ; Standard Input
  37.                 Mov     AH,3Fh                  ; Read Function Call
  38.                 Int     21h                     ; Call DOS
  39.                 Jc      Exit                    ; Exit if error
  40.  
  41.                 Push    CX                      ; Save requested read bytes
  42.                 Mov     CX,AX                   ; Get bytes read
  43.                 Jcxz    Exit                    ; Exit if no bytes read
  44.  
  45.                 Mov     BX,Offset Table         ; Conversion Table
  46.                 Mov     SI,Offset EndProg       ; Beginning of Data
  47.                 Mov     DI,SI                   ; Destination is same
  48.                 Push    CX                      ; Save bytes actually read
  49.  
  50. Conversion:     Lodsb                           ; Get byte
  51.                 And     AL,7Fh                  ; Strip out high bit
  52.                 Xlat    Table                   ; Convert it
  53.                 Stosb                           ; Save byte
  54.                 Loop    Conversion              ; For all data
  55.  
  56.                 Pop     CX                      ; Get back bytes read
  57.                 Mov     BX,1                    ; Standard Output Handle
  58.                 Mov     AH,40h                  ; Write Function Call
  59.                 Int     21h                     ; Call DOS
  60.                 Jc      Exit                    ; Exit if error
  61.  
  62.                 Cmp     AX,CX                   ; See if all bytes written
  63.                 Jb      Exit                    ; Exit if disk is full
  64.  
  65.                 Pop     CX                      ; Get back bytes to read
  66.                 Jmp     MainLoop                ; Do next read
  67.  
  68. Exit:           Int     20h                     ; Terminate Program
  69.  
  70. EndProg         Label   Byte                    ; Buffer Area
  71. CSEG            EndS
  72.                 End     Entry
  73.  
  74.