123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- .sect .text; .sect .rom; .sect .data; .sect .bss
- .define begtext,begdata,begbss,syscal
- .define hol0,.reghp,.limhp,.trppc,.ignmask
- .define ERANGE,ESET,EHEAP,ECASE,EILLINS,EIDIVZ,EODDZ
- .define EXIT,BRK
- .extern endbss
- ERANGE = 1
- ESET = 2
- EIDIVZ = 6
- EHEAP = 17
- EILLINS = 18
- EODDZ = 19
- ECASE = 20
- .sect .text
- .data1 0353
- .data1 0176 ! jmp to begtext in 2 bytes. Assembler generates 3
- ! bytes.
- syscal: jmp 1f
- grow: jmp 2f
- jmp 2f
- .data2 -277, -277, -277, -277, -277, -277
- 2:
- mov ax,2088
- 1:
- int 5
- jmp 1f
- .space 100
- 1:
- ret
- begtext:
- mov bx,sp
- mov cx,(bx)
- add bx,2
- mov ax,cx
- inc ax
- shl ax,1
- add ax,bx
- push ax
- push bx
- push cx
- xor bp,bp
- mov bx,endbss
- mov cx,9
- add bx,1024
- shr bx,cl
- shl bx,cl
- call grow
- xor cx,cx
- push cx
- call __sbrk
- mov (.limhp),ax
- mov (.reghp),ax ! on Xenix, heap begins above stack!
- pop ax
- call __m_a_i_n
- EXIT:
- push ax
- call __exit
- BRK:
- jmp __brk
- .sect .data
- begdata:
- hol0:
- .data2 0,0
- .data2 0,0
- argv:
- .data2 3f
- envp:
- .data2 0
- 3:
- .asciz "PROGRAM"
- .reghp:
- .data2 endbss
- .limhp:
- .data2 endbss
- .ignmask:
- .data2 0
- .trppc:
- .data2 0
- .sect .bss
- begbss:
|