.TITLE ASCEBC ; ; WAYNE L. DERNONCOURT ; NAVAL ORDNANCE STATION ; INDIAN HEAD, MARYLAND 20640 ; SEPTEMBER 22, 1980 ; ; ; THIS ROUTINE CONVERTS ASCII TO EBCDIC ; ; R0 - CONTAINS THE STARTING ADDRESS FOR TRANSLATION ; R1 - NUMBER OF BYTES ; R2 - CONTAINS THE CHARACTER WHICH IS TO BE TRANSLATED ; R3 - CONTAINS THE BITS TO BE CLEARED ; .NLIST BEX ; ASCEBC::NOP MOV R0,-(SP) ;SAVE MOV R1,-(SP) ;REGISTERS MOV R2,-(SP) ;ON THE MOV R3,-(SP) ;STACK ; MOV (R5),R0 ;GET THE NUMBER OF ARGUMENTS MOV 2(R5),R0 ;GET THE STARTING ADDRESS MOV @4(R5),R1 ;NUMBER OF BYTES MOV #^B1111111110000000,R3 ;MASK FOR CLEARING OUT UPPER BYTE 10$: MOVB (R0),R2 ;STORE CHARACTER IN R2 BIC R3,R2 ;CLEAR THEM OUT HERE MOVB ASCII(R2),(R0)+ ;PUT NEW CHARACTER INTO INBUF SOB R1,10$ ; MOV (SP)+,R3 ;RESTORE MOV (SP)+,R2 ;REGISTERS MOV (SP)+,R1 ;FROM MOV (SP)+,R0 ;THE STACK ; RTS PC ; ; DATA AREA ; ASCII: .BYTE 000,001,002,003,067,055,056,057,026,005,045,013,014,015 .BYTE 016,017,020,021,022,023,074,075,062,046,030,031,077,047 .BYTE 034,035,036,037,100,117,177,173,133,154,120,175,115,135 .BYTE 134,116,153,140,113,141,360,361,362,363,364,365,366,367 .BYTE 370,371,172,136,114,176,156,157,174,301,302,303,304,305 .BYTE 306,307,310,311,321,322,323,324,325,326,327,330,331,342 .BYTE 343,344,345,346,347,350,351,112,340,132,137,155,171,201 .BYTE 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,300,152,320 .BYTE 241,007 .EVEN ; ; END OF ASCII TO EBCDIC MACRO ; .END