.TITLE ASCI/EBCDIC CONVERSION ROUTINE ; ; CONVERT AN EBCDIC STRING TO AN ASCII STRING ; CONVERT AN ASCII STRING TO AN EBCDIC STRING ; ; FORTRAN CALL: CALL EBASCI(N,A) ; N - NUMBER OF CHARS ; ; IF N<0 ASCII TO EBCDIC CONVERSION ; IF N>0 EBCDIC TO ASCII CONVERSION ; ; A - BYTE ADDRESS OF ARRAY ; EBASCI::MOV R0,-(SP) ;SAVE WORK REGISTERS MOV R1,-(SP) MOV R2,-(SP) ; MOV @2(R5),R2 ;1ST - # BYTES MOV 4(R5),R1 ;2ND - ADDRESS TST R2 BLT 2$ ; 1$: CLR R0 BISB @R1,R0 ;GET A BYTE MOVB EBCASC(R0),(R1)+;CONVERT AND REPLACE SOB R2,1$ ;DONE? MOV (SP)+,R2 ;RESTORE REGISTERS MOV (SP)+,R1 MOV (SP)+,R0 RTS PC ; 2$: NEG R2 3$: CLR R0 BISB @R1,R0 ;GET A BYTE MOVB ASCEBC(R0),(R1)+;CONVERT AND REPLACE SOB R2,3$ ;DONE? MOV (SP)+,R2 ;RESTORE REGISTERS MOV (SP)+,R1 MOV (SP)+,R0 RTS PC ; ; CONVERSION TABLE ; ; .NLIST BEX ASCEBC: .BYTE 100, 1, 2, 3, 67, 55, 56, 57, 26, 5, 45, 13, 14, 15, 16, 17 .BYTE 20, 21, 22,100, 74, 75, 62, 46, 30, 31, 77,100, 42,100, 65,100 .BYTE 100,132,177,173,133,154,120,175,115,135,134,116,153,140,113,141 .BYTE 360,361,362,363,364,365,366,367,370,371,172,136,114,176,156,157 .BYTE 174,301,302,303,304,305,306,307,310,311,321,322,323,324,325,326 .BYTE 327,330,331,342,343,344,345,346,347,350,351,100,100,100,100,155 .BYTE 100,201,202,203,204,205,206,207,210,211,221,222,223,224,225,226 .BYTE 227,230,231,242,243,244,245,246,247,250,251,100,117,100,137, 7 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 .BYTE 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100 EBCASC: .BYTE 77, 1, 2, 3, 77, 11, 77,177, 77, 77, 77, 13, 14, 15, 16, 17 .BYTE 20, 21, 22, 77, 77, 77, 10, 77, 30, 31, 77, 77, 77, 77, 77, 77 .BYTE 77, 77, 34, 77, 77, 12, 27, 77, 77, 77, 77, 77, 77, 5, 6, 7 .BYTE 77, 77, 26, 77, 77, 36, 77, 4, 77, 77, 77, 77, 24, 25, 77, 32 .BYTE 40, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 56, 74, 50, 53,174 .BYTE 46, 77, 77, 77, 77, 77, 77, 77, 77, 77, 41, 44, 52, 51, 73,176 .BYTE 55, 57, 77, 77, 77, 77, 77, 77, 77, 77, 77, 54, 45,137, 76, 77 .BYTE 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 72, 43,100, 47, 75, 42 .BYTE 77,141,142,143,144,145,146,147,150,151, 77, 77, 77, 77, 77, 77 .BYTE 77,152,153,154,155,156,157,160,161,162, 77, 77, 77, 77, 77, 77 .BYTE 77, 77,163,164,165,166,167,170,171,172, 77, 77, 77, 77, 77, 77 .BYTE 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77 .BYTE 77,101,102,103,104,105,106,107,110,111, 77, 77, 77, 77, 77, 77 .BYTE 77,112,113,114,115,116,117,120,121,122, 77, 77, 77, 77, 77, 77 .BYTE 77, 77,123,124,125,126,127,130,131,132, 77, 77, 77, 77, 77, 77 .BYTE 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 77, 77, 77, 77, 77, 77 .END