Pristine Ack-5.5
[Ack-5.5.git] / mach / i80 / libmon / head_em.s
1 .define hol0, argv, envp, begbss
2 .define .ignmask,.reghp,.trapproc,.fra
3 .define .retadr,.retadr1,.areg,.bcreg,.tmp1
4 .define block1, block2, block3
5 .define .stop
6 .sect .text
7 .sect .rom
8 .sect .data
9 .sect .bss
10 .sect .text
11
12 .sect .text
13         lxi h,0x1000            ! stack will grow from 0x1000 downwards
14         sphl
15         lxi d,endbss
16         lxi h,begbss            ! clear bss
17         mov a,e
18         sub l
19         mov e,a
20         mov a,d
21         sbb h
22         mov d,a                 ! de now contains endbss - begbss
23         mvi c,0
24
25 2:      mov m,c
26         inx h
27         dcx d
28         mov a,e
29         ora d
30         jnz 2b
31
32         lxi h,envp              ! call main
33         push h
34         lxi h,argv
35         push h
36         lxi h,0
37         push h
38         call __m_a_i_n
39 .stop:  jmp 0xfb52
40         
41 .sect .bss
42 begbss:
43 .trapproc:      .space  2
44 .ignmask:       .space  2
45 .sect .data
46 hol0:           .space  8
47 .reghp:         .data2  endbss
48 argv:           .data2  0
49 envp:           .data2  0
50 .retadr:        .space  2               ! used to save return address
51 .retadr1:       .space  2               ! reserve
52 .bcreg:         .space  2               ! used to save localbase
53 .areg:          .space  1
54 .tmp1:          .space  2
55 .fra:           .space  8               ! 8 bytes function return area
56 block1:         .space  4               ! used by 32 bits divide and
57 block2:         .space  4               ! multiply routines
58 block3:         .space  4
59