#!/bin/bash # # NOTE: this is not 100% done # maybe better as single script with buildin tests for all cases. # #TODO FIX # LD L,(IX+2) -> LD L,2(IX) but was LD L,(IX) # COLOR_PRESENTS: # .db #0x00, # Start with useless cat and lots of perl kittens to print with. cat $1 |\ # fix org perl -ne 's/(?<=\s)ORG(?=\s)/; org/gi; print;' |\ # fix equ perl -ne 's/(?<=\s)EQU(?=\s)/.equ/gi; print;' |\ perl -ne 's/(?<=\w):(?=\s*.equ)/ /gi; print;' |\ # fix include perl -ne 's/(?<=\s)INCLUDE(?=\s)/.include/gi; print;' |\ perl -ne 's/(?<=\.include\s\s)\w+.\w+/\L"$&"/gi; print;' |\ perl -ne 's/(?<=\.include\s\s\")(\w+.)xsm(?=\")/$1asm/gi; print;' |\ # fix data types perl -ne 's/(?<=[\s|:])DB|DEFB(?=\s)/.db/gi; print;' |\ perl -ne 's/(?<=[\s|:])DW|DEFW(?=\s)/.dw/gi; print;' |\ perl -ne 's/(?<=[\s|:])DS|DEFS(?=\s)/.ds/gi; print;' |\ perl -ne 's/(?<=[\s|:])DEFM(?=\s+")/.str/gi; print;' |\ perl -ne 's/(?<=\.)DB(?=\s+")/str/gi; print;' |\ # LD (IX+#09),5 of SET 4,(IX+#0B) perl -ne 's/(\(\s?I[XY]\s?\+\s?)\#(?=[\d\w]+)/$1&H/gi; print;' |\ # fix data notation perl -ne 's/&H(?=[\d\w])/0x/gi; print;' |\ perl -ne 's/&B(?=\d)/0b/gi; print;' |\ # TXT_Z80: DB "Z80",&H0A,&H0D,&H1D perl -ne 's/(?<=\")\s*,\s*(?=[\s\d])/\n\t\t.db\t\t/gi; print;' |\ # LD HL,0FCCAh perl -ne 's/0([\w\d]{2,4})h/0x$1/gi; print;' |\ # AND 03h perl -ne 's/(?<=AND\s)([\w\d]{2,4})h/0x$1/gi; print;' |\ # Fix missing : after labels note: igm!! perl -ne 's/(^\w+)($|\s)(?!.*equ)/$1:\t/igm; print;' |\ # Add constant prefix perl -ne 's/(?<=CP\s)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=AND\s)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=OR\s)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=ADD\s)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=SUB\s)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=ADD\s\w,)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=ADC\s\w,)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w,)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w\w,)[-\d\"]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w,)0x\d/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w\w,)0x\d/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w,)0b\d/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w\w,)0b\d/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\(..\),)[-\d\"\+]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\(..\+\d\),)[-\d\"\+]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\(..\+\d\d\),)[-\d\"\+]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\(..\+0x\d\),)[-\d\"\+]/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\(..\+0x\d\d\),)[-\d\"\+]/#$&/gi; print;' |\ # Add label prefix 8 bit perl -ne 's/(?<=LD\s\w,)\w{2,}/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\w,)\w_\w+/#$&/gi; print;' |\ # Add label prefix 16 bit perl -ne 's/(?<=LD\s\w\w,)\w{2,}/#$&/gi; print;' |\ perl -ne 's/(?<=LD\s\(\w\w\),)\w{2,}/#$&/gi; print;' |\ # fix ix/iy offset notation perl -ne 's/\(\s?IX\s?\+\s?([0x\d\w]+)\s?\)/$1(IX)/gi; print;' |\ perl -ne 's/\(\s?IY\s?\+\s?([0x\d\w]+)\s?\)/$1(IY)/gi; print;'