prt0comn.asm 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. ; common startup code for all the memory models
  2. %ifdef __TINY__
  3. %define __NEAR_CODE__
  4. %define __NEAR_DATA__
  5. %elifdef __SMALL__
  6. %define __NEAR_CODE__
  7. %define __NEAR_DATA__
  8. %elifdef __MEDIUM__
  9. %define __FAR_CODE__
  10. %define __NEAR_DATA__
  11. %elifdef __COMPACT__
  12. %define __NEAR_CODE__
  13. %define __FAR_DATA__
  14. %elifdef __LARGE__
  15. %define __FAR_CODE__
  16. %define __FAR_DATA__
  17. %elifdef __HUGE__
  18. %define __FAR_CODE__
  19. %define __FAR_DATA__
  20. %else
  21. %fatal "Memory model not defined."
  22. %endif
  23. cpu 8086
  24. segment _TEXT use16 class=CODE align=1
  25. extern PASCALMAIN
  26. extern InitTask
  27. extern WaitEvent
  28. extern InitApp
  29. ..start:
  30. call far InitTask
  31. test ax, ax
  32. jz error
  33. mov [hInst], di
  34. xor ax, ax
  35. push ax
  36. call far WaitEvent
  37. push word [hInst]
  38. call far InitApp
  39. test ax, ax
  40. jz error
  41. %ifdef __FAR_CODE__
  42. jmp far PASCALMAIN
  43. %else
  44. jmp PASCALMAIN
  45. %endif
  46. error:
  47. mov ax, 4cffh
  48. int 21h
  49. segment _DATA use16 class=DATA align=2
  50. dw 0,0,5,0,0,0,0,0
  51. hInst: dw 0
  52. segment _STACK stack class=STACK align=16
  53. group DGROUP _DATA _STACK