|
|
1.1 ! root 1: TITLE crt0msg - startup messages ! 2: ;*** ! 3: ;crt0msg.asm - startup error messages ! 4: ; ! 5: ; Copyright (c) 1985-1987, Microsoft Corporation. All rights reserved. ! 6: ; ! 7: ;Purpose: ! 8: ; Core collection of error messages contained in programs ! 9: ; which use the C startup code; also contains _FF_MSGBANNER ! 10: ; for writing the first portion of run-time error messages. ! 11: ; ! 12: ;******************************************************************************* ! 13: ! 14: ! 15: ?DF= 1 ; this is special for c startup ! 16: include version.inc ! 17: .xlist ! 18: include cmacros.inc ! 19: .list ! 20: ! 21: createSeg HDR, nhdr, byte, public, MSG, DGROUP ! 22: createSeg MSG, nmsg, byte, public, MSG, DGROUP ! 23: createSeg PAD, npad, byte, common, MSG, DGROUP ! 24: createSeg EPAD, nepad, byte, common, MSG, DGROUP ! 25: ! 26: createSeg _TEXT, code, word, public, CODE, <> ! 27: createSeg _DATA, data, word, public, DATA, DGROUP ! 28: ! 29: defGrp DGROUP ; define DGROUP ! 30: ! 31: ! 32: public __acrtmsg ! 33: __acrtmsg= 9876h ! 34: ! 35: ; Messages used by crt0.asm ! 36: ! 37: sBegin nmsg ! 38: assumes ds,data ! 39: dw 0 ! 40: db 'R6000',13,10,'- stack overflow',13,10,0 ! 41: dw 3 ! 42: db 'R6003',13,10,'- integer divide by 0',13,10,0 ! 43: dw 9 ! 44: db 'R6009',13,10,'- not enough space for environment',13,10,0 ! 45: ifdef _QC ! 46: dw 12 ! 47: db 'R6012',13,10,'- illegal near pointer use',13,10,0 ! 48: dw 13 ! 49: db 'R6013',13,10,'- illegal far pointer use',13,10,0 ! 50: dw 14 ! 51: db 'R6014',13,10,'- control-BREAK encountered',13,10,0 ! 52: endif ;_QC ! 53: dw 252 ! 54: db 13,10,0 ! 55: dw 255 ! 56: db 'run-time error ',0 ! 57: sEnd nmsg ! 58: ! 59: sBegin npad ! 60: assumes ds,data ! 61: dw -1 ! 62: ; no padding for now; ! 63: ; MAX padding would be ! 64: ; db 114 dup(0) ! 65: sEnd ! 66: ! 67: externP _NMSG_WRITE ! 68: ! 69: sBegin data ! 70: assumes ds,data ! 71: ! 72: globalCP _adbgmsg,0 ; For C, _FF_DBGMSG is inactive, so ! 73: ; _adbgmsg is set to null; ! 74: ; For FORTRAN, _adbgmsg is set to ! 75: ; point to _FF_DBGMSG in dbginit ! 76: ; initializer in dbgmsg.asm ! 77: ! 78: sEnd data ! 79: ! 80: ! 81: sBegin code ! 82: assumes cs,code ! 83: assumes ds,data ! 84: ! 85: page ! 86: ;*** ! 87: ;_FF_MSGBANNER - writes out first part of run-time error messages ! 88: ; ! 89: ;Purpose: ! 90: ; This routine writes "\r\n" followed by "run-time error " to standard ! 91: ; error. ! 92: ; ! 93: ; For FORTRAN $DEBUG error messages, it also uses the _FF_DBGMSG ! 94: ; routine whose address is stored in the _adbgmsg variable to print out ! 95: ; file and line number information associated with the run-time error. ! 96: ; If the value of _adbgmsg is found to be null, then the _FF_DBGMSG ! 97: ; routine won't be called from here (the case for C-only programs). ! 98: ; ! 99: ;Entry: ! 100: ; No arguments. ! 101: ; ! 102: ;Exit: ! 103: ; Nothing returned. ! 104: ; ! 105: ;Uses: ! 106: ; AX,BX,CX,DX,ES are destroyed. ! 107: ; ! 108: ;Exceptions: ! 109: ; None handled. ! 110: ; ! 111: ;******************************************************************************* ! 112: ! 113: ! 114: cProc _FF_MSGBANNER,<PUBLIC>,<> ! 115: cBegin ! 116: mov ax,252 ; "\r\n" to begin error message ! 117: push ax ! 118: call _NMSG_WRITE ! 119: if sizeC ! 120: cmp word ptr [__adbgmsg+2],0 ! 121: jz dbgmsg_inactive ! 122: call dword ptr [__adbgmsg] ; call __FF_DBGMSG for FORTRAN ! 123: else ; not needed for C-only version ! 124: cmp [__adbgmsg],0 ! 125: jz dbgmsg_inactive ! 126: call word ptr [__adbgmsg] ! 127: endif ! 128: dbgmsg_inactive: ! 129: mov ax,255 ; run-time error message banner ! 130: push ax ! 131: call _NMSG_WRITE ! 132: cEnd ! 133: ! 134: sEnd code ! 135: ! 136: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.