INITPM.A 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * INITPM.A - Presentation manager startup *
  5. * *
  6. * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. module initpm
  11. segment ENTERCODE(CODE,28H)
  12. segment INITCODE(CODE,28H)
  13. segment CODE(none,28H);
  14. segment SIG_TEXT(CODE,68H)
  15. segment EMU_TEXT(EMU_CODE,28H)
  16. segment PROC_TEXT(CODE,68H)
  17. segment MP_CODE(MP_CODE,68H)
  18. segment _TEXT(CODE,28H)
  19. segment _INIT(INIT_CODE,28H)
  20. segment _FAR_DATA(FAR_DATA,28H)
  21. segment FAR_BSS(FAR_BSS,28H)
  22. segment CONST(CONST,28H)
  23. segment _CONST(DATA,28H)
  24. segment _DATA(DATA,28H)
  25. segment BSS_START(BSS,28H)
  26. segment _BSS(BSS,28H)
  27. segment BSS_END(BSS,28H)
  28. segment STACK(STACK,74H)
  29. section
  30. segment ENTERCODE(CODE,28H)
  31. segment INITCODE(CODE,28H)
  32. segment CODE(none,28H);
  33. segment _TEXT(CODE,28H)
  34. segment _INIT(INIT_CODE,28H)
  35. segment _FAR_DATA(FAR_DATA,28H)
  36. segment EMU_STATE(DATA,28H)
  37. reserved:
  38. dw 0,0,0,0,0,0,0,0
  39. segment EMU_TEXT(EMU_CODE,28H)
  40. segment CONST(CONST,28H)
  41. segment _CONST(DATA,28H)
  42. segment _DATA(DATA,28H)
  43. segment BSS_START(BSS,28H)
  44. segment _BSS(BSS,28H)
  45. segment BSS_END(BSS,28H)
  46. segment STACK(STACK,74H)
  47. segment NEAR_STACK(BSS, 28H)
  48. segment NEAR_HEAP(BSS, 28H)
  49. segment HEAP(DATA,28H)
  50. segment STACK(STACK,74H)
  51. group DGROUP(EMU_STATE,CONST,_CONST,_DATA,BSS_START,_BSS,BSS_END,NEAR_HEAP,HEAP,STACK)
  52. select _DATA
  53. SSisDS : dw 2 (* PM segmentation *)
  54. HeapSize = 1000H
  55. InitRec: dw 0, 0, 0, _INIT
  56. select BSS_START
  57. public __bss_start:
  58. select BSS_END
  59. public __bss_end:
  60. select HEAP
  61. org HeapSize
  62. select _TEXT
  63. text_dummy: db 0
  64. select ENTERCODE
  65. extrn _main
  66. extrn __startup
  67. extrn _x_main
  68. extrn _x_initx
  69. extrn __initx
  70. extrn _x_bss_end
  71. extrn _x_bss_start
  72. push ds
  73. mov dx, seg __initx
  74. mov ds, dx
  75. mov cx, [__initx]
  76. mov si, [__initx][2]
  77. mov dx, seg _x_main
  78. mov ds, dx
  79. mov [_x_initx], cx
  80. mov [_x_initx][2], si
  81. mov word [_x_main][0], _main
  82. mov word [_x_main][2], seg _main
  83. mov word [_x_bss_end], __bss_end
  84. mov word [_x_bss_start], __bss_start
  85. push ax
  86. push bx
  87. mov bx, InitRec
  88. mov ax, _DATA
  89. extrn __InitLink
  90. call far __InitLink
  91. pop bx
  92. pop ax
  93. mov cx, [SSisDS]
  94. mov si, sp
  95. sub si, HeapSize
  96. sub si, __bss_end
  97. pop ds
  98. jmp far __startup
  99. dw EMU_STATE
  100. dw CONST
  101. dw _CONST
  102. dw _DATA
  103. dw BSS_START
  104. dw _BSS
  105. dw BSS_END (* establishs order ! *)
  106. dw NEAR_HEAP
  107. dw HEAP
  108. dw STACK
  109. dw text_dummy
  110. dw reserved
  111. dw 0
  112. end *
  113.