.TITLE EBCDIC TO ASCII CONVERSION ROUTINE ; ; CONVERT AN EBCDIC STRING TO AN ASCII STRING ; ; R1: START ADDRESS OF STRING ; R2: NUMBER OF BYTES TO CONVERT ; ; ;FORTRAN CALL: CALL EBASCI(N,A) ; N - NUMBER OF CHARS ; A - ARRAY OF CHARS ; .GLOBL EBASCI EBASCI: MOV R0,-(SP) ;SAVE WORK REGISTERS MOV R1,-(SP) MOV R2,-(SP) ; MOV @2(R5),R2 ;FIRST PARAM-NO. OF BYTES MOV 4(R5),R1 ;SECOND PARAM - STRING OF BYTES ; 1$: CLR R0 BISB @R1,R0 ;GET A BYTE MOVB CONTAB(R0),(R1)+ ;CONVERT AND REPLACE SOB R2,1$ ;DONE? MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 ;RESTORE REGISTER RTS PC .NLIST BEX CONTAB: .BYTE 077,001,002,003,077,011,077,177,077,077,077,013,014,015,016,017 ;00-0F .BYTE 020,021,022,077,077,077,010,077,030,031,077,077,077,077,077,077 ;10-1F .BYTE 077,077,034,077,077,012,027,077,077,077,077,077,077,005,006,007 ;20-2F .BYTE 077,077,026,077,077,036,077,004,077,077,077,077,024,025,077,032 ;30-3F .BYTE 040,077,077,077,077,077,077,077,077,077,077,056,074,050,053,174 ;40-4F .BYTE 046,077,077,077,077,077,077,077,077,077,041,044,052,051,073,176 ;50-5F .BYTE 055,057,077,077,077,077,077,077,077,077,077,054,045,137,076,077 ;60-6F .BYTE 077,077,077,077,077,077,077,077,077,077,072,043,100,047,075,042 ;70-7F .BYTE 077,141,142,143,144,145,146,147,150,151,077,077,077,077,077,077 ;80-8F .BYTE 077,152,153,154,155,156,157,160,161,162,077,077,077,077,077,077 ;90-9F .BYTE 077,077,163,164,165,166,167,170,171,172,077,077,077,077,077,077 ;A0-AF .BYTE 077,077,077,077,077,077,077,077,077,077,077,077,077,077,077,077 ;B0-BF .BYTE 077,101,102,103,104,105,106,107,110,111,077,077,077,077,077,077 ;C0-CF .BYTE 077,112,113,114,115,116,117,120,121,122,077,077,077,077,077,077 ;D0-DF .BYTE 077,077,123,124,125,126,127,130,131,132,077,077,077,077,077,077 ;E0-EF .BYTE 060,061,062,063,064,065,066,067,070,071,077,077,077,077,077,077 ;F0-FF ; .END