head_em.s 852 B

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