.TITLE CONV .IDENT /01/ ;TRANSMIT CODE TRANSLATE ROUTINES FOR ASCII AND EBCDIC ; ; ASCII TO EBCDIC TRANSLATION; ; ; CALL ASTOEB(SOURCE,DEST,LENGTH) ; ASTOEB:: MOV 2(R5),R2 ;SOURCE ADDRESS MOV 4(R5),R3 ;DEST ADDRESS MOV @6(R5),R4 ;LENGTH BEQ 20$ ;ZERO LENGTH ; 10$: MOVB (R2)+,R0 ;GET ASCII CHAR BIC #177600,R0 ;GET 7 BITS MOVB ATE(R0),(R3)+ ;TRANSLATE SOB R4,10$ ;LOOP ; 20$: RETURN ; .PAGE ; ; EBCDIC TO ASCII TRANSLATION; ; ; CALL EBTOAS(SOURCE,DEST,LENGTH) ; EBTOAS:: MOV 2(R5),R2 ;SOURCE ADDRESS MOV 4(R5),R3 ;DEST ADDRESS MOV @6(R5),R4 ;LENGTH BEQ 20$ ;ZERO LENGTH ; 10$: CLR R0 BISB (R2)+,R0 ;GET EBCDIC CHARACTER MOVB ETA(R0),(R3)+ ;TRANSLATE SOB R4,10$ ;LOOP ; 20$: RETURN ; .PAGE ; ; CONVERSION TABLE FOR ASCII TO EBCDIC ; .MACRO HEX C3,C4 C1=''C3-60 C2=''C4-60 .IF GT C1-9. ;SUBT 7 MORE IF A LETTER C1=C1-7 .ENDC .IF GT C2-9. C2=C2-7 .ENDC .BYTE C1*16.+C2 .ENDM ; ; ATE: ; ; 000 HEX 0,0 ;NULL HEX 0,1 ;SOH HEX 0,2 ;STX HEX 0,3 ;ETX HEX 3,7 ;EOT HEX 2,D ;ENQ HEX 2,E ;ACK HEX 2,F ;BEL ; ; 010 HEX 1,6 ;BS HEX 0,5 ;HT HEX 2,5 ;LF HEX 0,B ;VT HEX 0,C ;FF HEX 0,D ;CR HEX 0,E ;SO HEX 0,F ;SI ; ; 020 HEX 1,0 ;DLE HEX 1,1 ;DC1 HEX 1,2 ;DC2 HEX 1,3 ;DC3 HEX 3,C ;DC4 HEX 3,D ;NAK HEX 3,2 ;SYN HEX 2,6 ;ETB ; ; 030 HEX 1,8 ;CAN HEX 1,9 ;EM HEX 3,F ;SUB HEX 2,7 ;ESC HEX 1,C ;ASCII FS BECOMES EBCDIC IFS HEX 1,D ;ASCII GS BECOMES EBCDIC IGS HEX 1,E ;ASCII RS BECOMES EBCDIC IRS HEX 1,F ;ASCII US BECOMES EBCDIC IUS ; ; 040 HEX 4,0 ;SPACE HEX 5,A ;! HEX 7,F ;" HEX 7,B ;# HEX 5,B ;$ HEX 6,C ;% HEX 5,0 ;& HEX 7,D ;' ; ; 050 HEX 4,D ;( HEX 5,D ;) HEX 5,C ;* HEX 4,E ;+ HEX 6,B ;, HEX 6,0 ;- HEX 4,B ;. HEX 6,1 ;/ ; ; 060 HEX F,0 ;0 HEX F,1 ;1 HEX F,2 ;2 HEX F,3 ;3 HEX F,4 ;4 HEX F,5 ;5 HEX F,6 ;6 HEX F,7 ;7 ; ; 070 HEX F,8 ;8 HEX F,9 ;9 HEX 7,A ;: HEX 5,E ;; HEX 4,C ;< HEX 7,E ;= HEX 6,E ;> HEX 6,F ;? ; ; LOWER CASE ; ; 100 HEX 7,C ;@ HEX C,1 ;A HEX C,2 ;B HEX C,3 ;C HEX C,4 ;D HEX C,5 ;E HEX C,6 ;F HEX C,7 ;G ; 110 HEX C,8 ;H HEX C,9 ;I HEX D,1 ;J HEX D,2 ;K HEX D,3 ;L HEX D,4 ;M HEX D,5 ;N HEX D,6 ;O ; ; 120 HEX D,7 ;P HEX D,8 ;Q HEX D,9 ;R HEX E,2 ;S HEX E,3 ;T HEX E,4 ;U HEX E,5 ;V HEX E,6 ;W ; ; 130 HEX E,7 ;X HEX E,8 ;Y HEX E,9 ;Z HEX 4,A ;ASCII [ BECOMES EBCDIC CENT SIGN HEX E,0 ;\ HEX 5,F ;ASCII ] BECOMES EBCDIC "NOT" OPERATOR HEX 4,F ;ASCII ^ BECOMES EBCDIC VERTICAL BAR HEX 6,D ;UNDERLINE ; ; ; LOWER CASE ; ; 140 HEX 7,9 ;ACCENT HEX 8,1 ;A HEX 8,2 ;B HEX 8,3 ;C HEX 8,4 ;D HEX 8,5 ;E HEX 8,6 ;F HEX 8,7 ;G ; ; 150 HEX 8,8 ;H HEX 8,9 ;I HEX 9,1 ;J HEX 9,2 ;K HEX 9,3 ;L HEX 9,4 ;M HEX 9,5 ;N HEX 9,6 ;O ; ; 160 HEX 9,7 ;P HEX 9,8 ;Q HEX 9,9 ;R HEX A,2 ;S HEX A,3 ;T HEX A,4 ;U HEX A,5 ;V HEX A,6 ;W ; ; 170 HEX A,7 ;X HEX A,8 ;Y HEX A,9 ;Z HEX C,0 ;LEFT BRACE HEX 6,A ;OR HEX D,0 ;RIGHT BRACE HEX A,1 ;TILDE HEX 0,7 ;DEL .PAGE ; ; EBCDIC-TO-ASCII TRANSLATION TABLE ; ;000 ETA: .BYTE 000 ;NUL .BYTE 001 ;SOH .BYTE 002 ;STX .BYTE 003 ;ETX .BYTE 000 ;PF -NO ASCII .BYTE 011 ;HT .BYTE 000 ;LC - NO ASCII .BYTE 177 ;DEL ;010 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;SMM - N.A. .BYTE 013 ;VT .BYTE 014 ;FF .BYTE 015 ;CR .BYTE 016 ;SO .BYTE 017 ;SI ;020 .BYTE 020 ;DLE .BYTE 021 ;DC1 .BYTE 022 ;DC2 .BYTE 023 ;DC3(TM) .BYTE 000 ;RES - N.A. .BYTE 000 ;NL - N.A. .BYTE 010 ;BS .BYTE 000 ;IL - N.A. ;030 .BYTE 030 ;CAN .BYTE 031 ;EM .BYTE 000 ;CC - N.A. .BYTE 000 ;N.A. .BYTE 034 ;IFS .BYTE 035 ;IGS .BYTE 036 ;IRS .BYTE 037 ;IUS(ITB) ;040 .BYTE 000 ;DS - N.A. .BYTE 000 ;SOS -N.A. .BYTE 000 ;FS - N.A. .BYTE 000 ;N.A. .BYTE 000 ;BYP - N.A. .BYTE 012 ;LF .BYTE 027 ;ETB(EOB) .BYTE 033 ;ESC(PRE) ;050 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;SM -N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 005 ;ENQ .BYTE 006 ;ACK .BYTE 007 ;BEL ;060 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 026 ;SYN .BYTE 000 ;N.A. .BYTE 000 ;PN - N.A. .BYTE 000 ;RS - N.A. .BYTE 000 ;UC - N.A. .BYTE 004 ;EOT ;070 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 024 ;DC4 .BYTE 025 ;NAK .BYTE 000 ;N.A. .BYTE 032 ;SUB ;100 .BYTE 040 ;SPACE .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;110 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 133 ;CENT SIGN ([ IN ASCII) .BYTE 056 ;. .BYTE 074 ;< .BYTE 050 ;( .BYTE 053 ;+ .BYTE 136 ;VERTICAL BAR ;120 .BYTE 046 ;& .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;130 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 041 ;! .BYTE 044 ;$ .BYTE 052 ;* .BYTE 051 ;) .BYTE 073 ;; .BYTE 135 ;] ;140 .BYTE 055 ;- .BYTE 057 ;/ .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;150 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 174 ;NON-PRINTING (ASCII - ) .BYTE 054 ;, .BYTE 045 ;% .BYTE 137 ;- .BYTE 076 ;> .BYTE 077 ;? ;160 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;170 .BYTE 000 ;N.A. .BYTE 140 ;NON-PRINTING .BYTE 072 ;: .BYTE 043 ;# .BYTE 100 ;@ .BYTE 047 ;' .BYTE 075 ;= .BYTE 042 ;" ;200 .BYTE 000 ;N.A. .BYTE 141 ;A - LOWER CASE .BYTE 142 ;B .BYTE 143 ;C .BYTE 144 ;D .BYTE 145 ;E .BYTE 146 ;F .BYTE 147 ;G ;210 .BYTE 150 ;H - LOWER CASE .BYTE 151 ;I .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;220 .BYTE 000 ;N.A. .BYTE 152 ;J - LOWER CASE .BYTE 153 ;K .BYTE 154 ;L .BYTE 155 ;M .BYTE 156 ;N .BYTE 157 ;O .BYTE 160 ;P ;230 .BYTE 161 ;Q - LOWER CASE .BYTE 162 ;R .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;240 .BYTE 000 ;N.A. .BYTE 176 ;NON-PRINTING .BYTE 163 ;S .BYTE 164 ;T .BYTE 165 ;U .BYTE 166 ;V .BYTE 167 ;W .BYTE 170 ;X ;250 .BYTE 171 ;Y - LOWER CASE .BYTE 172 ;Z .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;260 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;270 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;300 .BYTE 173 ;NON-PRINTING .BYTE 101 ;A .BYTE 102 ;B .BYTE 103 ;C .BYTE 104 ;D .BYTE 105 ;E .BYTE 106 ;F .BYTE 107 ;G ;310 .BYTE 110 ;H .BYTE 111 ;I .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;320 .BYTE 175 ;NON-PRINTING .BYTE 112 ;J .BYTE 113 ;K .BYTE 114 ;L .BYTE 115 ;M .BYTE 116 ;N .BYTE 117 ;O .BYTE 120 ;P ;330 .BYTE 121 ;Q .BYTE 122 ;R .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;340 .BYTE 134 ;\ .BYTE 000 ;N.A. .BYTE 123 ;S .BYTE 124 ;T .BYTE 125 ;U .BYTE 126 ;V .BYTE 127 ;W .BYTE 130 ;X ;350 .BYTE 131 ;Y .BYTE 132 ;Z .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. ;360 .BYTE 060 ;0 .BYTE 061 ;1 .BYTE 062 ;2 .BYTE 063 ;3 .BYTE 064 ;4 .BYTE 065 ;5 .BYTE 066 ;6 .BYTE 067 ;7 ;370 .BYTE 070 ;8 .BYTE 071 ;9 .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 000 ;N.A. .BYTE 177 ;N.A. - BUT RECOGNIZE AS PAD .END