head_em.s 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. .define .lino,.filn
  2. .define EXIT
  3. .define begtext,begdata,begbss
  4. .define EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
  5. .define hol0,.reghp,.limhp,.trpim,.trppc
  6. .define fsoft_used,start_float
  7. .sect .text
  8. .sect .rom
  9. .sect .data
  10. .sect .bss
  11. ! runtime startoff for sun3 machine
  12. LINO_AD = 0
  13. FILN_AD = 4
  14. EARRAY = 0
  15. ERANGE = 1
  16. ESET = 2
  17. EIDIVZ = 6
  18. EHEAP = 17
  19. EILLINS = 18
  20. ECASE = 20
  21. EBADGTO = 27
  22. .sect .text
  23. begtext:
  24. move.l (sp),d2
  25. lea (4,sp),a0
  26. move.l d2,d1
  27. add.l #1,d1
  28. asl.l #2,d1
  29. move.l a0,a1
  30. add.l d1,a1
  31. pea (a1)
  32. pea (a0)
  33. move.l d2,-(sp)
  34. move.l #0,a6
  35. jsr (fsoft_used)
  36. jsr (__m_a_i_n)
  37. move.l d0,(sp) ! no stack cleanup needed
  38. EXIT:
  39. jsr (__exit)
  40. fsoft_used:
  41. start_float:
  42. jmp (_finitfp_)
  43. .sect .data
  44. begdata:
  45. .data4 0 ! may be at virtual address 0 with no problem
  46. hol0:
  47. .lino:
  48. .data4 0 ! lino
  49. .filn:
  50. .data4 0 ! filn
  51. .reghp:
  52. .data4 _end
  53. .limhp:
  54. .data4 _end
  55. .trppc:
  56. .data4 0
  57. .trpim:
  58. .data4 0 ! USED TO BE 2 BYTES; IS THIS RIGHT?
  59. .sect .bss
  60. begbss: !initialization is not needed because ALL entries are in zero space!