head_em.s 829 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. .define EXIT, F_DUM
  2. .define ERANGE, ESET, EHEAP, EILLINS, EODDZ, ECASE, EBADMON
  3. .define hol0, trppc, trpim, reghp, argv, envp
  4. .sect .text
  5. .sect .rom
  6. .sect .data
  7. .sect .bss
  8. .sect .text
  9. EXIT = 0
  10. F_DUM = 0
  11. ERANGE = 1
  12. ESET = 2
  13. EHEAP = 17
  14. EILLINS = 18
  15. EODDZ = 19
  16. ECASE = 20
  17. EBADMON = 25
  18. .sect .text
  19. !clear .sect .bss
  20. ldk R2, $0
  21. ld R3, $endbss
  22. ld R0, R3
  23. sub R0, $begbss
  24. jr EQ, 1f
  25. sra R0
  26. push *RR2, $0
  27. dec R0
  28. jr EQ, 1f
  29. ldl RR4, RR2
  30. dec R5, $2
  31. lddr *RR4, *RR2, R0
  32. 1:
  33. ldb RL0, $10 ! echo newline
  34. sc $4
  35. ldl RR14, $0
  36. push *RR14, envp
  37. push *RR14, argv
  38. push *RR14, $1
  39. calr __m_a_i_n
  40. ldl RR14, $0xC00017FC
  41. sc $0
  42. .sect .bss
  43. begbss:
  44. .sect .data
  45. hol0:
  46. .data2 0,0 ! line no
  47. .data2 0,0 ! file
  48. trppc:
  49. .data2 0
  50. trpim:
  51. .data2 0
  52. argv:
  53. envp:
  54. .data2 1f
  55. .data2 0
  56. 1: .asciz "program"
  57. reghp:
  58. .data2 endbss