| 1 | / C runtime startoff including monitoring |
| 2 | / |
| 3 | / Modified to work in separate i/d |
| 4 | / Remove comments below to use without floating point |
| 5 | / |
| 6 | |
| 7 | cbufs = 150. |
| 8 | |
| 9 | .globl _monitor |
| 10 | .globl _sbrk |
| 11 | .globl _main |
| 12 | .globl _exit |
| 13 | .globl _IEH3exit |
| 14 | .globl _etext |
| 15 | .comm countbase,2 |
| 16 | |
| 17 | .comm savr5,2 |
| 18 | |
| 19 | /.globl fptrap,fpjsr |
| 20 | start: |
| 21 | / sys signal; 4; fptrap |
| 22 | / jsr pc,fpjsr |
| 23 | setd |
| 24 | mov sp,r0 |
| 25 | mov (r0),-(sp) |
| 26 | tst (r0)+ |
| 27 | mov r0,2(sp) |
| 28 | |
| 29 | mov $_etext,r1 |
| 30 | sub $eprol,r1 |
| 31 | add $7,r1 |
| 32 | ash $-3,r1 |
| 33 | bic $!17777,r1 |
| 34 | mov $cbufs,-(sp) |
| 35 | add $3*[cbufs+1],r1 |
| 36 | mov r1,-(sp) |
| 37 | asl r1 |
| 38 | mov r1,-(sp) |
| 39 | jsr pc,_sbrk |
| 40 | tst (sp)+ |
| 41 | cmp r0,$-1 |
| 42 | beq 9f |
| 43 | mov r0,-(sp) |
| 44 | add $6,r0 |
| 45 | mov r0,countbase |
| 46 | mov $_etext,-(sp) |
| 47 | mov $eprol,-(sp) |
| 48 | jsr pc,_monitor |
| 49 | add $10.,sp |
| 50 | jsr pc,_main |
| 51 | cmp (sp)+,(sp)+ |
| 52 | jsr pc,_exit |
| 53 | |
| 54 | 9: |
| 55 | mov $2,r0 |
| 56 | sys write; 8f; 9f-8f |
| 57 | |
| 58 | .data; 8: <No space for monitor buffer\n>; 9:.even; .text |
| 59 | |
| 60 | _exit: |
| 61 | _IEH3exit: |
| 62 | mov r5,-(sp) |
| 63 | mov sp,r5 |
| 64 | clr -(sp) |
| 65 | jsr pc,_monitor |
| 66 | tst (sp)+ |
| 67 | mov 4(r5),r0 |
| 68 | sys exit |
| 69 | eprol: |