Also, may I suggest a small optimisation to APPFB.COM : there is no need for push cs/pop ds at the beginning, because in a .COM format executable all the segment registers are initially set to the same value. You can eliminate two unnecessary bytes ;-)
There was a bug in either some revision of MSDOS or a compatible version that needed it. That’s why it’s common (though agreed technically unnecessary as it’s unlikely to ever be run on those...)
Also, may I suggest a small optimisation to APPFB.COM : there is no need for push cs/pop ds at the beginning, because in a .COM format executable all the segment registers are initially set to the same value. You can eliminate two unnecessary bytes ;-)