home *** CD-ROM | disk | FTP | other *** search
- /
- /
-
- / f46 -- constant evaluation
-
- .globl getcon
- .globl dope
-
- .globl code
-
- getcon:
- mov r0,-(sp)
- mov r2,-(sp)
- clr r2 / dec . counter
- clrf fr0
- movif $10.,fr1
- clr -(sp) / - flag
- cmpb (r1)+,$'+
- beq 1f
- cmpb -(r1),$'-
- bne 1f
- inc r1
- inc (sp)
- 1:
- movb (r1)+,r0
- sub $'0,r0
- cmp r0,$9
- blos 2f
- cmp r0,$'.-'0
- bne 1f
- dec r2
- br 1b
- 2:
- tst r2
- beq 2f
- dec r2
- 2:
- mulf fr1,fr0
- movif r0,fr2
- addf fr2,fr0
- br 1b
- 1:
- tst r2
- bne 1f
- dec r2
- 1:
- cmp r0,$'e-'0
- beq 2f
- cmp r0,$'d-'0
- bne 1f
- 2:
- mov r3,-(sp)
- clr r3
- clr -(sp)
- cmpb (r1),$'-
- bne 3f
- inc r1
- inc (sp)
- br 2f
- 3:
- cmpb (r1),$'+
- bne 2f
- inc r1
- 2:
- movb (r1)+,r0
- sub $'0,r0
- cmp r0,$9
- bhi 2f
- mpy $10.,r3
- add r0,r3
- br 2b
- 2:
- tst (sp)+
- beq 2f
- neg r3
- 2:
- add r3,r2
- mov (sp)+,r3
- 1:
- movf fr1,fr2
- add $1,r2
- beq 1f
- blt 2f
- clr -(sp)
- br 3f
- 2:
- mov pc,-(sp)
- neg r2
- 3:
- sub $1,r2
- ble 2f
- mulf fr1,fr2
- br 3b
- 2:
- tst (sp)+
- bne 2f
- mulf fr2,fr0
- br 1f
- 2:
- divf fr2,fr0
- 1:
- tst (sp)+
- beq 1f
- negf fr0
- 1:
- cmpb -(r1),$',
- bne 1f
- movf fr0,-(sp)
- inc r1
- jsr r5,getcon
- movf (sp)+,fr1 / a,b -> r1,r0
- 1:
- mov (sp)+,r2
- mov (sp)+,r0
- rts r5
-
- dope:
- cmp progt,$6 / test "block data"
- bne 1f
- rts r5
- 1:
- clr r3
- 1:
- cmp r3,symtp
- bhis 1f
- mov symtab(r3),r0
- bic $!70,r0
- cmp r0,$20
- bne 2f
- mov symtab+2(r3),r0
- beq 2f
- mov (r0)+,r1
- mov r1,r2
- asl r2
- add r0,r2
- mov (r2),r0
- jsr r5,code
- <d%d: %d.\n \0>; .even
- r0
- r1
- 3:
- dec r1
- blt 3f
- mov -(r2),r0
- bge 4f
- jsr r5,code
- <..; \0>; .even
- br 3b
- 4:
- jsr r5,code
- <%d.; \0>; .even
- r0
- br 3b
- 3:
- mov symtab(r3),r2
- clrb r2
- swab r2
- jsr r5,code
- <%d.\n\0>; .even
- r2
- 2:
- add $8,r3
- br 1b
- 1:
- rts r5
-
-