--- /dev/null
+.define hol0, argv, envp, begbss
+.define .ignmask,.reghp,.trapproc,.fra
+.define .retadr,.retadr1,.areg,.bcreg,.tmp1
+.define block1, block2, block3
+.define .stop
+.sect .text
+.sect .rom
+.sect .data
+.sect .bss
+.sect .text
+
+.sect .text
+ lxi h,0x1000 ! stack will grow from 0x1000 downwards
+ sphl
+ lxi h,begbss ! clear bss
+ lxi d,endbss-begbss
+ mvi c,0
+
+2: mov m,c
+ inx h
+ dcx d
+ mov a,e
+ ora d
+ jnz 2b
+
+ lxi h,envp ! call main
+ push h
+ lxi h,argv
+ push h
+ lxi h,0
+ push h
+ call _m_a_i_n
+.stop: jmp 0xfb52
+
+.sect .bss
+begbss:
+.trapproc: .space 2
+.ignmask: .space 2
+.sect .data
+hol0: .space 8
+.reghp: .data2 endbss
+argv: .data2 0
+envp: .data2 0
+.retadr: .space 2 ! used to save return address
+.retadr1: .space 2 ! reserve
+.bcreg: .space 2 ! used to save localbase
+.areg: .space 1
+.tmp1: .space 2
+.fra: .space 8 ! 8 bytes function return area
+block1: .space 4 ! used by 32 bits divide and
+block2: .space 4 ! multiply routines
+block3: .space 4
+