ES @ start is zero & SS is 0x3E2, so that is resolved no problem.
ShowS is designed to take SI as a pointer and when done SI points to the next location after the terminator being NULL. So at the first invocation of ShowS SI = 7C65 and when it's done 7C7A.
112 7C65 4C6F6164696E672042- SignOn db 'Loading BONES OS', 13, 10, 13, 10, 0
113 7C6E 4F4E4553204F530D0A-
114 7C77 0D0A00
115 7C7A 537461636B20506F69- Disp db 'Stack Pointer '
116 7C83 6E74657220
117 7C88 303030303A30303030- Stack db '0000:0000', 13, 10, 0
118 7C91 0D0A00
At lines 20 & 21 I save ES:SP and at lines 26 & 27 exchange ES with pointer to Disp = 7C7A. That value being zero is converted correctly and then @ 31 - 33 in essence 7C7A is exchanged with 03E2 and then converted so my display in previous posting is 0000:03E2. by the time we get to 37, contents of stack should be 7C7A, but it's not. The string @ SignOn is displayed again, so somehow the contents of stack got changed to 7C65.
20 7C11 53 push bx
21 7C12 50 push ax
22
23 7C13 BE[6500] mov si, SignOn
24 7C16 E81F00 call ShowS
25
26 7C19 58 pop ax
27 7C1A 56 push si
28 7C1B BF[8800] mov di, Stack
29 7C1E E82300 call I2A_16
30
31 7C21 5E pop si
32 7C22 58 pop ax
33 7C23 56 push si
34 7C24 83C705 add di, 5
35 7C27 E81A00 call I2A_16
36
37 7C2A 5E pop si
38 7C2B E80A00 call ShowS
The question is, how did the contents of the stack get changed to 7C65 when application was tested in DEBUG & SYSDEB it worked just fine. Also when @ line 37 I directly address Disp mov si, Disp it also works fine.
As usual and has been the case for quite some time, work arounds are in order. My guess would be the BIOS encounters some sort of interrupt and trashes SP. Just thought somebody might have some quick insight. It is working, just not the way I wanted
Thanks for the heads up Frank, as one never knows if the question is stated clearly, if not made aware.