Keine Ahnung. Ich kenn mich mit MASM und TCC nicht aus, weil ich die nie benutzt habe. Ich würde sagen, das NEAR muss da hin, weil das .MODEL SMALL impliziert, dass der komplette Code innerhalb eines Segments ist. Ich weiss nicht ob, dann irgendwelche Informationen über das Segment von _CMAIN zur Verfügung stehen. Du kannst ja mal FAR ausprobieren.
Das RET hab ich dahin gemacht, weil ich das mal kurz disassembliert hatte, und kein RET gesehen hatte.
Normalerweise beendet man die Hauptroutine eines reinen Assemblerprogramms nicht mit RET (auch wenn es möglich ist) sondern mit Interrupt 21h, Funktion 4fh. Vermutlich steht es deswegen nicht in deinem Buch.
Hier wird allerdings ein RET benötigt, weil _MAIN nicht die tatsächliche Hauptroutine ist, sondern auch nur eine einfache Funktion, die von c0s.obj aufgerufen wird. Du kannst sie mit dem Interrupt 21h, Fkt 4fh beenden, wenn du willst, allerdings würde ich das nicht empfehlen, weil c0s.obj und cs.lib erwarten, dass du diese Funktion mit RET beendest.