М.б. есть ещё какие нюансы работы в исполняемом коде в двух случаях:
1. SHORT(SHORT(ORG(ch))
2. SHORT(SHORT( от арифм.выражения ORD(ch) DIV 256 )
И эти нюансы вынудили изощряться со 128 
Единственный нюанс - оно не работает без вычитания 128. 
Занудно поясню, что имел ввиду вопрошая.
вот имеем код
SHORT(SHORT(ORD(ch))ch двухбайтный, ORD(ch) в диапазоне целых 80-FFFF
всё компилится и работает как, видимо, задумано, на выходе байт (в битах 80-FF)
или от -128 до 127 (как BYTE)
А вот код
SHORT(SHORT(ORD(ch) DIV 256) может быть уже не хочет работать и взбрыкивается (нюансы кодогенерации) хотя ORD(ch) DIV 256 даёт значения от 0 до FF
И вот тут приходит на помощь волшебное 128 и значения загоняются в диапазон BYTE, хотя в первом случае этого не понадобилось.