head_em.s 973 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. .define EARRAY,ERANGE,EILLINS,EILLSIZE,ECASE,EMON,EHEAP
  2. .define hol0,trapproc,trpim,argv,hp,.reghp,envp,begbss,ignmask
  3. .define savebc,savede,savehl,saveix,saveaf,saveiy,ebadmon
  4. .sect .text
  5. .sect .rom
  6. .sect .data
  7. .sect .bss
  8. .sect .text
  9. EARRAY = 0
  10. ERANGE = 1
  11. EHEAP = 17
  12. EILLINS=18
  13. EILLSIZE=19
  14. ECASE=20
  15. EMON=25
  16. ebadmon=25
  17. .sect .text
  18. ! clear .sect .bss
  19. ld sp,0x7ffe !address of fbase
  20. ld de,endbss
  21. ld h,d
  22. ld l,e
  23. ld bc,begbss
  24. sbc hl,bc
  25. ld a,h
  26. or l
  27. jr z,1f
  28. 2:
  29. xor a
  30. ld (de),a
  31. dec de
  32. dec hl
  33. ld a,h
  34. or l
  35. jr nz,2b
  36. 1: ! hl == 0
  37. ld bc,envp
  38. push bc
  39. ld bc,argv
  40. push bc
  41. ld bc,1
  42. push bc
  43. call __m_a_i_n
  44. jp 0x20
  45. .sect .bss
  46. begbss:
  47. .sect .data
  48. hol0:
  49. .data2 0,0
  50. .data2 0,0
  51. saveaf:
  52. .data2 0
  53. savebc:
  54. .data2 0
  55. savede:
  56. .data2 0
  57. savehl:
  58. .data2 0
  59. saveix:
  60. .data2 0
  61. saveiy:
  62. .data2 0
  63. ignmask:
  64. .data2 0
  65. hp:
  66. .data2 0
  67. trapproc:
  68. .data2 0
  69. trpim:
  70. .data2 0
  71. argv:
  72. .data2 3f
  73. envp:
  74. .data2 0
  75. 3:
  76. .asciz 'PROGRAM'
  77. .reghp:
  78. .data2 endbss