;Alto->8086 small-c compiler rev 2.0 C_CODE SEGMENT $INCLUDE(8086LIB.D) $INCLUDE(smallsig.DEC) ASSUME CS:C_CODE, DS:C_DATA ; extern MyFrame(); ; extern CallersFrame(); ; extern ReturnLoc(); ; extern ReturnTo(); ; struct ssig { ; int ssframe; ; int ssenframe; ; int sscontinue; ; }; ; int SSEnable(ss) _SSEnable: ; struct ssig *ss; CALL StkChk PUSH BP MOV BP,SP PUSH BX ; { ; ss->ssenframe = MyFrame(); ; BX _ _ss POP BX PUSH BX PUSH BX CALL _MyFrame MOV CX,BX POP BX MOV [BX+2],CX ; ss->ssframe = CallersFrame(MyFrame()); CALL _MyFrame CALL _CallersFrame MOV CX,BX ; BX _ _ss POP BX PUSH BX MOV [BX],CX ; ss->sscontinue = ReturnLoc(MyFrame()); ; BX _ _ss POP BX PUSH BX PUSH BX CALL _MyFrame CALL _ReturnLoc MOV CX,BX POP BX MOV [BX+4],CX ; return(0); XOR BX,BX MOV SP,BP POP BP RET; ; }; ; int SSReturn(ss, result) _SSReturn: ; struct ssig *ss; ; int result; CALL StkChk PUSH BP MOV BP,SP PUSH CX PUSH BX ; { ; ReturnTo(ss->ssenframe, ss->ssframe, ss->sscontinue, result); ; BX _ _ss MOV BX,[BP-2] MOV CX,[BX+2] PUSH CX ; DI _ _ss MOV DI,[BP-2] MOV BX,[DI] PUSH BX ; BX _ _ss MOV BX,[BP-2] MOV CX,[BX+4] ; BX _ _result MOV BX,[BP-4] CALL _ReturnTo ADD SP,4 ; }; MOV SP,BP POP BP RET; ; Externals Declared Here PUBLIC _SSEnable PUBLIC _SSReturn C_CODE ENDS ; Number of Bytes of Code = 056X, (86)