; Cameron Kaiser 2020 ; Public domain. ; convert 0d 0a from input to just 0a in output. ; this assumes that it has been "munged" where every LF has become CRLF. SEARCH SYS SEARCH SYSSYM ; impure area .OFINI .OFDEF IN, D.DDB .OFDEF OUT, D.DDB .OFSIZ MEMSIZ PHDR -1,0,PH$REE!PH$REU GETIMP MEMSIZ,A5 ; allocate impure area BYP ; skip command line in A2 past blanks LIN ; eol? JNE GETOUT ; no NAWTY: ; yes, explain yourself, Lucy TYPECR TYPECR EXIT ; Jordan Peele segment GETOUT: FSPEC OUT(A5),LST INIT OUT(A5) BYP LIN JEQ NAWTY ; skip = CMPB (A2)+,#'= JNE NAWTY BYP LIN JEQ NAWTY FSPEC IN(A5),LST INIT IN(A5) LOOKUP IN(A5) BEQ DOIT TYPECR JMP NAWTY DOIT: OPENI IN(A5) LOOKUP OUT(A5) BNE 1$ DSKDEL OUT(A5) 1$: OPENO OUT(A5) CTRLC ENDOF CLOOP: FILINB IN(A5) TST IN+D.SIZ(A5) BEQ ENDOF CROOP: CMPB D1,#13. BNE CROUT ; not carriage return ; is CR FILINB IN(A5) TST IN+D.SIZ(A5) BEQ ENDOF ; but it's EOF, so can't be CRLF CMPB D1,#10. BEQ CROUT ; is CRLF, so just emit the LF only ; is CR+something else MOV D1,D2 MOVB #13.,D1 FILOTB OUT(A5) ; emit the original CR MOV D2,D1 BR CROOP ; and check again with this next byte CROUT: FILOTB OUT(A5) BR CLOOP ENDOF: CLOSE IN(A5) CLOSE OUT(A5) EXIT END .