head_em.s 1006 B

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