txtmgr.inc
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:8k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. ; File: TXTMGR.INC
  2. ; NOTE: When making changes to this file, be sure to make equivalent
  3. ; changes to file TXTMGR.H
  4. ; See file TXTMGR.H for comments.
  5. TXTMGR_INC = ON
  6. DbTxtFind MACRO pTbl
  7. ENDM
  8. DbChkTxdCur MACRO
  9. ENDM
  10. ;
  11. ; GetSegAddr CODE returns the address of the code segment in ax
  12. ; GetSegAddrSCAN CODE does the same, but is used from the SCAN segment
  13. ;
  14. GetSegAddr MACRO SegName
  15. EXTRN Seg_&SegName:abs
  16. mov ax,SEG Seg_&SegName
  17. ENDM
  18. GetSegAddrSCAN MACRO SegName
  19. EXTRN Seg_&SegName:abs
  20. mov ax,SEG Seg_&SegName
  21. ENDM
  22. SetfDirect MACRO reg,value
  23. ifb <value>
  24. mov [grs.GRS_fDirect],reg
  25. else
  26. mov [grs.GRS_fDirect],value
  27. endif
  28. ENDM
  29. PopfDirect MACRO Reg
  30. local RegLet
  31. RegLet substr <Reg>,1,1 ;; First letter of register
  32. pop Reg
  33. % mov [grs.GRS_fDirect],RegLet&&l
  34. ENDM
  35. ; macro to set es=seg addr of current text table
  36. ; fDirect must be FALSE
  37. GetSegTxtTblCur MACRO
  38. GETSEG es,[txdCur.TXD_bdlText_seg]
  39. ENDM
  40. ; macro to set es=seg addr of current text table
  41. GetSegTxtCur MACRO
  42.       % call TxtSegCur&&?segname
  43. ENDM
  44. THDR_ST STRUC
  45. THDR_otxLabLink DW 0
  46. THDR_otxDefTypeLink DW 0
  47. THDR_otxTypeLink DW 0
  48. THDR_otxReParseLink DW 0
  49. THDR_ST ENDS
  50. THDR_SIZE EQU size THDR_ST
  51. ; THDR_SIZE is the constant offset to 1st byte of pcode in text table
  52. ;The global static txtErr contains return values from TxtDirect
  53. TXER_ST STRUC
  54. TXER_errCode DW 0 ;offset into the QBI Message Table (MSG_xxx) or,
  55. ;if UNDEFINED, ps.bdpError contains the parser-built
  56. ;ASCII error message
  57. TXER_oRs DW 0 ;identifies the text table with the error (only valid
  58. ;if fDirect is FALSE)
  59. TXER_otx DW 0 ;offset into text table where error occurred
  60. TXER_oSrc DW 0 ;UNDEFINED if the error was caught by the scanner.
  61. ;The user interface is responsible for invoking
  62. ;the lister to map the txtErr.otx to a line and
  63. ;column which can be displayed to the user.
  64. ;else The error was caught by the parser.
  65. ;oSrc identifies the column within the source
  66. ;line where the error occurred.
  67. TXER_fDirect DB 0 ;TRUE if error was in direct mode buffer,
  68. ;FALSE if it was somewhere in loaded program
  69. TXER_ST ENDS
  70. ;Macros used to build tables of opcodes used by TxtFind[Next]Op
  71. ;See TxtFindNextOp for a description of the format of these tables
  72. ;
  73. opTabStart MACRO tableId
  74. DW tableId&_opEot+1 ;num entries in table
  75. opTabCur = 0
  76. endm
  77. ;Highbit set in 1st word of table tells TxtFind... to search the table
  78. ;for each opcode, even if opcode's OPA_TxtFind bit is not set.
  79. ;This form is used for tables which are not searched at speed sensitive
  80. ;times.
  81. ;
  82. opTabStartAll MACRO tableId
  83. DW 8000h+tableId&_opEot+1 ;num entries in table
  84. opTabCur = 0
  85. endm
  86. opTabEntry MACRO tableId,opId
  87. tableId&_&opId EQU opTabCur+0 ;+0 means value, not alias for opTabCur
  88. opTabCur = opTabCur + 1
  89. DW opId
  90. endm
  91. FLoadActive MACRO
  92. cmp [cChansOpen],0
  93. ENDM
  94. ;Enumerated parm values for TxtBindPrsS
  95. ;
  96. TBIND_Load EQU 0 ;map pcode oNam->oPrs, call PrsDefine
  97. TBIND_Save1 EQU 1 ;map pcode oPrs->oNam - called before writing to file
  98. TBIND_Save2 EQU 2 ;map pcode oNam->oPrs - called after writing to file
  99. ;special lnInsert values for LoadFile(psdFilename, lnInsert)
  100. ;
  101. LF_NewProg EQU 0FFFFH ;do a NEW before the load
  102. LF_NewModule EQU 0FFFEH ;don't do a NEW before the load
  103. LF_ViewIncl EQU 0FFFDH ;load $INCLUDE file for editing
  104. LF_NewDoc EQU 0FFFCH ;load a document into a window
  105. sBegin DATA
  106. ife TXTMGR_ASM
  107. EXTRN flagsTm:byte ;text mgr flags - FTM_xxx
  108. endif
  109. FTM_reInclude EQU 1 ;if set, re-include all include files before
  110. ; next static scan
  111. ;SS_EXECUTE
  112. FTM_NoSsExecute EQU   2H ;set if no text tables are in SS_EXECUTE
  113. FTM_PrsDefDeleted EQU 4H ;set if a "defining" prs reference has been
  114.  ;deleted
  115. FTM_BpDeleted EQU 8H ;break point has been deleted on Editted line
  116. FTM_TxtPaste  EQU 10H ;We are in a TxtPaste operation
  117. FTM_WatchPcode EQU 20H ;Set if Watch Pcode exists anywhere
  118. FTM_SaveProcHdr EQU 40H ;Set when in critical section while Ascii
  119. ; saving a Proc Header. (a temp text table
  120. ; is active).
  121. FTM_Linking EQU 80H ;set if LinkAllFiles is executing
  122. sEnd DATA
  123. ;CODE segment publics
  124. ;
  125. sBegin CODE
  126. ife TXTUTIL_ASM
  127. EXTRN DescanOpcode:FAR
  128. endif ;TXTUTIL_ASM
  129. sEnd CODE
  130. ;DATA segment publics
  131. ;
  132. sBegin DATA
  133. ;The following masks get ORed into compSwitches by SetCompSwitches()
  134. COMP_SW_E EQU 1 ;set for each module which has ON ERROR stmt
  135. COMP_SW_X EQU 2 ;set for each module which has RESUME NEXT stmt
  136. COMP_SW_V EQU 4 ;set if any module has ON <event> stmt
  137. COMP_SW_W EQU 8 ;set if any module has ON <event> stmt
  138. EXTRN txtErr:word
  139. EXTRN txtFindIndex:byte
  140. ;return value set by TxtFindOp (and friends).  If 1st opcode in
  141. ; list was found, 1 if 2nd opcode in list was found etc.
  142. ; (this is only set if parm2 is not NULL on entry)
  143. ife TXTDEB_ASM
  144. ;number of watch expressions in all loaded modules
  145. EXTRN cWatch:word
  146. endif ;TXTDEB_ASM
  147. ife TXTUTIL_ASM
  148. EXTRN fViewInclude:byte ;non-zero if user wants to see INCLUDEd
  149. EXTRN fLnNotIncl:byte ;static return value of LnOfOtx,
  150. ; OtxOfLn, OtxBolOfOtx.  zero if given
  151. ; line was an INCLUDEd line
  152. EXTRN cInclNest:byte ;$INCLUDE nesting depth.  Non-zero if
  153. ; currently loading an $INCLUDE file
  154. EXTRN compSwitches:byte
  155. endif ;TXTUTIL_ASM
  156. ife TXTLOAD_ASM
  157. EXTRN cChansOpen:BYTE
  158. endif ;TXTLOAD_ASM
  159. sEnd DATA
  160. ;CP segment publics
  161. ;
  162. sBegin CP
  163. ife TXTDEB_ASM
  164. EXTRN WatchAdd:FAR
  165. EXTRN WatchDel:FAR
  166. EXTRN WatchInfo:FAR
  167. EXTRN WatchRelease:FAR
  168. EXTRN ZeroWatchVal:FAR
  169. EXTRN DebugReset:NEAR
  170. EXTRN fBpSet:FAR
  171. EXTRN ToggleBp:FAR
  172. EXTRN ClrBpAll:FAR
  173. EXTRN FExecutable:FAR
  174. EXTRN fNextStmtDoesIO:FAR
  175. EXTRN SkipStop:FAR
  176. endif ;TXTDEB_ASM
  177. ife TXTDIR_ASM
  178. EXTRN TxtDirect:FAR
  179. EXTRN SystemScan:FAR
  180. EXTRN OtxEndProg:NEAR
  181. endif ;TXTDIR_ASM
  182. ife TXTFIND_ASM
  183. EXTRN LnOfOtx:FAR
  184. EXTRN OPrsOfOtx:FAR
  185. EXTRN OtxOfLn:FAR
  186. EXTRN OtxBolOfOtx:FAR
  187. EXTRN OtxBosOfOtx:FAR
  188. EXTRN OtxBosNext:FAR
  189. EXTRN OtxBolNext0:FAR
  190. EXTRN OtxLabOfOtx:NEAR
  191. EXTRN OtxNoInclude:FAR
  192. EXTRN OtxResume:NEAR
  193. EXTRN OtxResumeNext:FAR
  194. EXTRN OtxTypDefined:NEAR
  195. EXTRN TxtFindOp:NEAR
  196. EXTRN TxtFindNextOp:NEAR
  197. EXTRN TxtFindOpDS:NEAR
  198. EXTRN TxtFindNextOpDS:NEAR
  199. EXTRN TxtFindOpExec:FAR
  200. EXTRN TxtFindNextOpFar:FAR
  201. EXTRN TxtSkipOpFar:FAR
  202. EXTRN TxtChkValidOpsExec:FAR
  203. endif ;TXTFIND_ASM
  204. ife TXTLOAD_ASM
  205. EXTRN LoadFile:FAR
  206. EXTRN GetLineBd:NEAR
  207. EXTRN UpdChanCur:NEAR
  208. EXTRN StatusMsgCP:NEAR
  209. EXTRN StatusMsg0CP:NEAR
  210. EXTRN TxtGrowPsSrcEmScratch:FAR
  211. endif ;TXTLOAD_ASM
  212. ife TXTMGR_ASM
  213. EXTRN TxtChange:FAR
  214. EXTRN TxtPaste:FAR
  215. EXTRN TxtStartBigEdit:FAR
  216. EXTRN TxtEndBigEdit:FAR
  217. EXTRN TxtBindPrsS:NEAR
  218. EXTRN UndefPrs:NEAR
  219. EXTRN ChkAllUndefPrsSaveRs:NEAR
  220. EXTRN ChkAllUndefPrs:NEAR
  221. EXTRN FreeAllUndefinedPrs:NEAR
  222. endif ;TXTMGR_ASM
  223. ife TXTMOVE_ASM
  224. EXTRN TxtCurInit:NEAR
  225. EXTRN TxtDelAll:FAR
  226. EXTRN TxtDeleteAll:NEAR
  227. EXTRN TxtDiscard:NEAR
  228. EXTRN TxtActivate:NEAR
  229. EXTRN TxtDeactivate:NEAR
  230. EXTRN TxtPrsInit:FAR
  231. EXTRN TxtFree:NEAR
  232. EXTRN TxtFreeFar:FAR
  233. EXTRN TxtMoveDown:NEAR
  234. EXTRN TxtMoveUp:NEAR
  235. EXTRN TxtMoveUpFar:FAR
  236. EXTRN GetWOtx:NEAR
  237. EXTRN PutWOtx:NEAR
  238. endif ;TXTMOVE_ASM
  239. ife TXTSAVE_ASM
  240. EXTRN SaveAllDeclares:FAR
  241. EXTRN SaveFile:FAR
  242. endif ;TXTSAVE_ASM
  243. ife TXTTHR_ASM
  244. EXTRN TxtDeThread:NEAR
  245. EXTRN TxtInsThread:NEAR
  246. EXTRN TxtAddThread:NEAR
  247. EXTRN ScanTypeBlock:FAR
  248. endif ;TXTTHR_ASM
  249. ife TXTUTIL_ASM
  250. EXTRN AskCantCont_CP:NEAR
  251. EXTRN AskRudeEdit:NEAR
  252. EXTRN AskRudeEditFar:FAR
  253. EXTRN TxtFLnIncluded:FAR
  254. EXTRN TxtViewIncl:FAR
  255. EXTRN TxtDescan:FAR
  256. EXTRN TxtModified:FAR
  257. EXTRN TxtDescanCP:NEAR
  258. EXTRN SystemDescanRude:FAR
  259. EXTRN ModuleRudeEdit:NEAR
  260. EXTRN ModuleRudeEditFar:FAR
  261. EXTRN SetViewInclude:FAR
  262. EXTRN TxtReInclude:FAR
  263. EXTRN TxtSegCurCP:NEAR
  264. EXTRN TxtTblSegCurCP:NEAR
  265. EXTRN OtxDefType:NEAR
  266. EXTRN OtxDefTypeCur:NEAR
  267. EXTRN OtxDefTypeCurFar:FAR
  268. EXTRN OtxDefType0Far:FAR
  269. EXTRN OtxDefTypeEot:NEAR
  270. EXTRN ONamOVarRudeOrParse:FAR
  271. EXTRN ChkLastAs:NEAR
  272. EXTRN SetCompSwitches:FAR
  273. endif ;TXTUTIL_ASM
  274. sEnd CP
  275. sBegin SCAN
  276. ife TXTUTIL_ASM
  277. EXTRN TxtSegCurSCAN:NEAR
  278. endif ;TXTUTIL_ASM
  279. sEnd SCAN