home *** CD-ROM | disk | FTP | other *** search
Text File | 1975-05-13 | 28.4 KB | 2,543 lines |
- .globl log2
- .globl getchar
- .globl lookchar
- .globl fsfile
- .globl seekchar
- .globl backspace
- .globl putchar
- .globl alterchar
- .globl move
- .globl rewind
- .globl create
- .globl zero
- .globl allocate
- .globl release
- .globl collect
- .globl w, r, a, l
- /
- cmp (sp)+,$2
- blo 1f
- tst (sp)+
- mov (sp)+,0f
- cmpb *0f,$'-
- beq 8f
- sys 0; 9f
- .data
- 9:
- sys open; 0:.=.+2; 0
- .text
- bec 2f
- mov $1,r0
- sys write; 4f; 5f-4f
- sys exit
-
- /
- 4: <Input file.\n>
- 5: .even
- /
- 2:
- mov r0,source
- 1:
- sys signal; 2; 1
- ror r0
- bcs 1f
- sys signal; 2; case177
- 1:
- 8:
- clr delflag
- mov $pdl,r5
- /
- mov $10.,r0
- jsr pc,log2
- mov r0,log10
- mov $1,r0
- jsr pc,allocate
- mov r1,scalptr
- clr r0
- jsr pc,putchar
- clr r0
- jsr pc,allocate
- mov r1,basptr
- mov $10.,r0
- jsr pc,putchar
- mov $1,r0
- jsr pc,allocate
- mov r1,inbas
- mov $10.,r0
- jsr pc,putchar
- mov $1,r0
- jsr pc,allocate
- mov $10.,r0
- jsr pc,putchar
- mov r1,tenptr
- clr r0
- jsr pc,allocate
- mov r1,chptr
- clr r0
- jsr pc,allocate
- mov r1,strptr
- mov $1,r0
- jsr pc,allocate
- mov $2,r0
- jsr pc,putchar
- mov r1,sqtemp
- clr r0
- jsr pc,allocate
- mov r1,divxyz
- loop:
- tst delflag
- bne in177
- mov sp,errstack
- jsr pc,readc
- mov $casetab,r1
- 1: tst (r1)+
- beq 2f
- cmp r0,(r1)+
- bne 1b
- jmp *-4(r1)
- 2: jmp eh
- /
- /
- / case for new line (which is special for apl box)
- /
- case012:
- br loop
- /
- /
- / case q for quit
- /
- case161:
- cmp readptr,$readstack+2
- blos 1f
- mov *readptr,r1
- beq 2f
- jsr pc,release
- 2:
- sub $2,readptr
- mov *readptr,r1
- beq 2f
- jsr pc,release
- 2:
- sub $2,readptr
- jmp loop
- 1:
- sys exit
- /
- /
- / case Q for controlled quit
- /
- case121:
- jsr pc,pop
- jes eh
- jsr pc,length
- cmp r0,$2
- jhi eh1
- jsr pc,rewind
- jsr pc,getchar
- jmi eh1
- jsr pc,release
- 1:
- cmp readptr,$readstack
- jlos eh
- mov *readptr,r1
- beq 2f
- jsr pc,release
- 2:
- sub $2,readptr
- sob r0,1b
- jbr loop
- /
- /
- / case of delete character
- /
- case177:
- sys signal; 2; case177
- mov $1,delflag
- mov r0,-(sp)
- mov 2(sp),r0
- cmp -6(r0),$sys+read
- bne 1f
- sub $6,2(sp)
- clr delflag
- 1:
- mov (sp)+,r0
- 2 /rti
- /
- in177:
- mov $' ,ch
- mov $1,r0
- sys write; 1f; 1
- clr delflag
- jmp eh
- /
- .bss
- delflag: .=.+2
- .text
- 1: <\n>
- .even
- /
- /
- / case digit
- /
- case060:
- movb r0,savec
- jsr pc,readin
- jsr pc,push
- br loop
- /
- /
- / case _ for negative numbers
- /
- case137:
- jsr pc,readin
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk
- dec w(r1)
- jsr pc,chsign
- mov savk,r0
- jsr pc,putchar
- jsr pc,push
- jbr loop
- /
- /
- / case screamer
- /
- case041:
- jsr pc,in041
- jbr loop
- /
- in041:
- jsr pc,readc
- cmp r0,$'<
- jeq in74a
- cmp r0,$'=
- jeq in75a
- cmp r0,$'>
- jeq in76a
- /
- mov $field,r1
- movb r0,(r1)+
- 1:
- jsr pc,readc
- movb r0,(r1)+
- cmpb r0,$'\n
- bne 1b
- clrb (r1)+
- /
- sys fork
- br 9f
- sys wait
- mov $1,r0
- sys write; screamer; 2
- rts pc
- 9: sys exec; 6f; 8f
- sys exit
- .data
- 8: 6f; 7f; field; 0
- 6: </bin/sh\0>
- 7: <-c\0>
- screamer: <!\n>
- .even
- .bss
- field: .=.+70.
- .text
- /
- /
- / case d for duplicate
- /
- case144:
- cmp r5,$pdl
- jeq eh
- clr r0
- jsr pc,allocate
- mov -2(r5),r0
- jsr pc,move
- jsr pc,push
- jmp loop
- /
- /
- / case z for stack size
- /
- case172:
- clr r0
- jsr pc,allocate
- mov r5,r3
- sub $pdl,r3
- asr r3
- 2:
- beq 2f
- clr r2
- dvd $100.,r2
- mov r3,r0
- jsr pc,putchar
- mov r2,r3
- br 2b
- 2:
- clr r0
- jsr pc,putchar
- jsr pc,push
- jmp loop
- /
- /
- / case c for flush
- /
- case143:
- 2: jsr pc,pop
- jes loop
- jsr pc,release
- br 2b
- /
- / case s for save
- /
- case163:
- tst sfree
- bne 1f
- jsr pc,sinit
- 1:
- jsr pc,readc
- cmp r5,$pdl
- bne 2f
- movb $'s,ch
- jmp eh
- 2:
- clr r2
- cmpb r0,$128. / check for array
- blo 1f
- inc r2
- 1:
- asl r0
- mov stable(r0),r1
- beq 2f
- mov r1,r0
- mov 2(r0),r1
- tst r2
- beq 4f
- mov r1,-(sp) / have array - release elements
- jsr pc,rewind
- 1:
- mov (sp),r1
- 3:
- jsr pc,getword
- bes 1f
- tst r0
- beq 3b
- mov r0,r1
- jsr pc,release
- br 1b
- 1:
- mov (sp)+,r1
- 4:
- jsr pc,release
- jsr pc,pop
- mov r1,2(r0)
- jbr loop
- 2:
- mov sfree,stable(r0)
- mov stable(r0),r0
- mov (r0),sfree
- beq symout
- clr (r0)
- jsr pc,pop
- mov r1,2(r0)
- jmp loop
- /
- symout:
- mov $1,r0
- sys write; 7f; 8f-7f
- jmp reset
- /
- 7: <Symbol table overflow.\n>
- 8: .even
- /
- /
- sinit:
- mov $sfree+4,r0
- 1:
- mov r0,-4(r0)
- clr -2(r0)
- add $4,r0
- cmp r0,$sfend
- blos 1b
- clr sfend-4
- rts pc
- /
- /
- .bss
- sfree: .=.+512.
- sfend:
- .text
- /
- /
- / case S for save
- /
- case123:
- tst sfree
- bne 1f
- jsr pc,sinit
- 1:
- jsr pc,readc
- cmp r5,$pdl
- bne 2f
- movb $'S,ch
- jbr eh
- 2:
- clr r3
- cmp r0,$128. / check for array
- blo 1f
- inc r3
- 1:
- asl r0
- mov stable(r0),r1
- beq 2f
- mov sfree,r2
- mov (r2),sfree
- beq symout
- mov stable(r0),(r2)
- mov r2,stable(r0)
- jsr pc,pop
- tst r3
- beq 1f
- jsr pc,length / to make auto arrays work
- cmp r0,$1
- bhi 1f
- jsr pc,zero
- 1:
- mov r1,2(r2)
- jbr loop
- 2:
- mov sfree,stable(r0)
- mov stable(r0),r2
- mov (r2),sfree
- beq symout
- clr (r2)
- jsr pc,pop
- tst r3
- beq 1f
- jsr pc,length
- cmp r0,$1
- bhi 1f
- jsr pc,zero
- 1:
- mov r1,2(r2)
- jbr loop
- /
- /
- / case l for load
- /
- case154:
- jsr pc,in154
- jmp loop
- /
- in154:
- jsr pc,readc
- clr r2
- cmp r0,$128. / check for array
- blo 1f
- inc r2
- 1:
- asl r0
- mov stable(r0),r1
- beq 1f
- mov 2(r1),r1
- mov r1,-(sp)
- jsr pc,length
- jsr pc,allocate
- tst r2
- beq 2f
- mov r1,-(sp) / have array - copy elements
- mov 2(sp),r1
- jsr pc,rewind
- 3:
- mov 2(sp),r1
- jsr pc,getword
- bes 3f
- tst r0
- beq 4f
- mov r0,-(sp)
- mov r0,r1
- jsr pc,length
- jsr pc,allocate
- mov (sp)+,r0
- jsr pc,move
- mov r1,r0
- mov (sp),r1
- jsr pc,putword
- br 3b
- 4:
- clr r0
- mov (sp),r1
- jsr pc,putword
- br 3b
- 3:
- mov (sp)+,r1
- jsr pc,push
- tst (sp)+
- rts pc
- 2:
- mov (sp)+,r0
- jsr pc,move
- jsr pc,push
- rts pc
- 1:
- clr r0
- jsr pc,allocate
- jsr pc,putword
- jsr pc,push
- rts pc
- /
- / case : for save array
- /
- case072:
- tst sfree
- bne 1f
- jsr pc,sinit
- 1:
- jsr pc,pop
- jes eh
- jsr pc,scalint
- jsr pc,fsfile
- jsr pc,backspace
- tst r0
- jmi eh1 / neg. index
- jsr pc,length
- cmp r0,$2
- jhi eh1 / index too high
- jsr pc,fsfile
- clr r3
- cmp r0,$1
- blo 1f
- beq 2f
- jsr pc,backspace
- mov r0,r3
- mul $100.,r3
- 2:
- jsr pc,backspace
- add r0,r3
- cmp r3,$2048.
- jhis eh1 / index too high
- asl r3
- 1:
- jsr pc,release
- jsr pc,readc
- cmp r5,$pdl
- bne 2f
- movb $':,ch
- jmp eh
- 2:
- asl r0
- mov stable(r0),r1
- beq 2f
- mov r1,-(sp)
- mov 2(r1),r1
- mov l(r1),r0
- sub a(r1),r0
- sub $2,r0
- cmp r3,r0
- blos 1f
- mov r1,-(sp) / need more space
- mov r3,r0
- add $2,r0
- jsr pc,allocate
- jsr pc,zero
- mov (sp)+,r0
- jsr pc,move
- mov r1,-(sp)
- mov r0,r1
- jsr pc,release
- mov (sp)+,r1
- 1:
- mov r1,-(sp)
- mov r3,r0
- jsr pc,seekchar
- jsr pc,getword
- bes 1f
- sub $2,r(r1)
- tst r0
- beq 1f
- mov r0,r1
- jsr pc,release
- 1:
- jsr pc,pop
- jes eh
- mov r1,r0
- mov (sp)+,r1
- jsr pc,alterchar
- swab r0
- jsr pc,alterchar
- mov (sp)+,r0
- mov r1,2(r0)
- jmp loop
- 2:
- mov sfree,stable(r0)
- mov stable(r0),r0
- mov (r0),sfree
- jeq symout
- clr (r0)
- mov r0,-(sp)
- mov r3,r0
- add $2,r0
- jsr pc,allocate
- jsr pc,zero
- sub $2,r0
- jsr pc,seekchar
- mov r1,-(sp)
- br 1b
- /
- / case ; for load array
- /
- case073:
- tst sfree
- bne 1f
- jsr pc,sinit
- 1:
- jsr pc,pop
- jes eh
- jsr pc,scalint
- jsr pc,fsfile
- jsr pc,backspace
- tst r0
- jmi eh1 / neg. index
- jsr pc,length
- cmp r0,$2
- jhi eh1
- jsr pc,fsfile
- clr r3
- cmp r0,$1
- blo 1f
- beq 2f
- jsr pc,backspace
- mov r0,r3
- mul $100.,r3
- 2:
- jsr pc,backspace
- add r0,r3
- cmp r3,$2048.
- jhis eh1 / index too high
- asl r3
- 1:
- jsr pc,release
- jsr pc,readc
- asl r0
- mov stable(r0),r1
- beq 1f
- mov 2(r1),r1
- jsr pc,length
- sub $2,r0
- cmp r3,r0
- bhi 1f / element not here
- mov r3,r0
- jsr pc,seekchar
- jsr pc,getword
- tst r0
- beq 1f
- mov r0,r1
- mov r1,-(sp)
- jsr pc,length
- jsr pc,allocate
- mov (sp)+,r0
- jsr pc,move
- jsr pc,push
- jmp loop
- 1:
- clr r0
- jsr pc,allocate
- jsr pc,putword
- jsr pc,push
- jmp loop
- /
- /
- / case L for load
- /
- case114:
- jsr pc,readc
- clr r2
- cmp r0,$128. / check for array
- blo 1f
- inc r2
- 1:
- asl r0
- mov stable(r0),r1
- beq 4f
- mov (r1),stable(r0)
- mov sfree,(r1)
- mov r1,sfree
- mov 2(r1),r1
- tst r2
- beq 2f
- mov r1,-(sp) / have array - assume a throw away
- jsr pc,rewind
- 1:
- mov (sp),r1
- 3:
- jsr pc,getword
- bes 1f
- tst r0
- beq 3b
- mov r0,r1
- jsr pc,release
- br 1b
- 1:
- mov (sp)+,r1
- 2:
- jsr pc,push
- jbr loop
- 4:
- movb $'L,ch
- jbr eh
- /
- /
- / case - for subtract
- /
- case055:
- jsr pc,in055
- jmp loop
- /
- in055:
- jsr pc,pop
- jes eh
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk
- dec w(r1)
- jsr pc,chsign
- mov savk,r0
- jsr pc,putchar
- jsr pc,push
- br in053
- /
- /
- / case + for add
- /
- case053:
- jsr pc,in053
- jmp loop
- /
- in053:
- jsr pc,eqk
- mov $add3,r0
- jsr pc,binop
- jsr pc,pop
- mov savk,r0
- jsr pc,putchar
- jsr pc,push
- rts pc
- /
- /
- / case * for multiply
- /
- case052:
- jsr pc,pop
- jes eh
- mov r1,-(sp)
- jsr pc,pop
- jec 1f
- mov (sp)+,r1
- jsr pc,push
- jbr eh
- 1:
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk2
- dec w(r1)
- mov r1,r2
- mov (sp)+,r1
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk1
- dec w(r1)
- mov r1,r3
- mov $mul3,r0
- jsr pc,binop
- jsr pc,pop
- cmp savk1,savk2
- blo 1f
- mov savk1,r2
- br 2f
- 1:
- mov savk2,r2
- 2:
- cmp r2,k
- bhis 1f
- mov k,r2
- 1:
- add savk2,savk1
- cmp r2,savk1
- bhis 1f
- mov r2,-(sp)
- neg r2
- add savk1,r2
- jsr pc,removc
- mov (sp)+,r0
- 2:
- jsr pc,putchar
- jsr pc,push
- jmp loop
- 1:
- mov savk1,r0
- br 2b
- /
- / r1 = string
- / r2 = count
- / result returned in r1 (old r1 released)
- /
- removc:
- mov r1,-(sp)
- jsr pc,rewind
- 1:
- cmp r2,$1
- blos 1f
- jsr pc,getchar
- sub $2,r2
- br 1b
- 1:
- mov $2,r0
- jsr pc,allocate
- mov r1,-(sp)
- 1:
- mov 2(sp),r1
- jsr pc,getchar
- bes 1f
- mov (sp),r1
- jsr pc,putchar
- mov r1,(sp)
- br 1b
- 1:
- cmp r2,$1
- bne 1f
- mov (sp),r3
- mov tenptr,r2
- jsr pc,div3
- mov r1,(sp)
- mov r3,r1
- jsr pc,release
- mov r4,r1
- jsr pc,release
- 1:
- mov 2(sp),r1
- jsr pc,release
- mov (sp)+,r1
- tst (sp)+
- rts pc
- /
- / case / for divide
- /
- case057:
- jsr pc,dscale
- mov $div3,r0
- jsr pc,binop
- mov r4,r1
- jsr pc,release
- jsr pc,pop
- mov savk,r0
- jsr pc,putchar
- jsr pc,push
- jmp loop
- /
- /
- dscale:
- jsr pc,pop
- jes eh
- mov r1,-(sp)
- jsr pc,pop
- bec 1f
- mov (sp)+,r1
- jsr pc,push
- jmp eh
- 1:
- mov r1,-(sp)
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk1
- dec w(r1)
- jsr pc,rewind
- mov 2(sp),r1
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk2
- dec w(r1)
- mov k,r2
- sub savk1,r2
- add savk2,r2
- mov k,savk
- mov (sp)+,r1
- tst r2
- bmi 1f
- jsr pc,add0
- br 2f
- 1:
- neg r2
- jsr pc,removc
- 2:
- mov r1,r3
- mov (sp)+,r2
- rts pc
- /
- /
- / case % for remaindering
- /
- case045:
- jsr pc,dscale
- mov $div3,r0
- jsr pc,binop
- jsr pc,pop
- jsr pc,release
- mov r4,r1
- mov savk1,r0
- add k,r0
- jsr pc,putchar
- jsr pc,push
- jmp loop
- /
- /
- binop:
- jsr pc,(r0)
- jsr pc,push
- mov r2,r1
- jsr pc,release
- mov r3,r1
- jsr pc,release
- rts pc
- /
- eqk:
- jsr pc,pop
- jes eh
- mov r1,-(sp)
- jsr pc,pop
- bec 1f
- mov (sp)+,r1
- jsr pc,push
- jbr eh
- 1:
- mov r1,-(sp)
- mov 2(sp),r1
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk1
- dec w(r1)
- mov (sp),r1
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk2
- dec w(r1)
- cmp r0,savk1
- beq 1f
- blo 2f
- mov savk2,savk
- mov r0,r2
- sub savk1,r2
- mov 2(sp),r1
- jsr pc,add0
- mov r1,2(sp)
- br 4f
- 2:
- mov savk1,r2
- sub savk2,r2
- mov (sp),r1
- jsr pc,add0
- mov r1,(sp)
- 1:
- mov savk1,savk
- 4:
- mov 2(sp),r3
- mov (sp)+,r2
- tst (sp)+
- rts pc
- .bss
- savk1: .=.+2
- savk2: .=.+2
- savk: .=.+2
- .text
- /
- /
- / r2 = count
- / r1 = ptr
- / returns ptr in r1
- add0:
- mov r1,-(sp)
- jsr pc,length
- jsr pc,allocate
- clr r0
- 1:
- cmp r2,$1
- blos 1f
- jsr pc,putchar
- sub $2,r2
- br 1b
- 1:
- mov r1,-(sp)
- mov 2(sp),r1
- jsr pc,rewind
- 1:
- jsr pc,getchar
- bes 1f
- mov (sp),r1
- jsr pc,putchar
- mov r1,(sp)
- mov 2(sp),r1
- br 1b
- 1:
- cmp r2,$1
- bne 1f
- mov (sp),r3
- mov tenptr,r2
- jsr pc,mul3
- mov r1,(sp)
- mov r3,r1
- jsr pc,release
- 1:
- mov 2(sp),r1
- jsr pc,release
- mov (sp)+,r1
- tst (sp)+
- rts pc
- / case i for input base
- /
- case151:
- jsr pc,in151
- jmp loop
- /
- in151:
- jsr pc,pop
- jes eh
- jsr pc,scalint
- mov r1,-(sp)
- mov inbas,r1
- mov (sp)+,inbas
- jsr pc,release
- rts pc
- case111:
- mov inbas,r1
- jsr pc,length
- inc r0
- jsr pc,allocate
- mov inbas,r0
- jsr pc,move
- clr r0
- jsr pc,putchar /scale
- jsr pc,push
- jmp loop
- /
- .bss
- inbas: .=.+2
- .data
- /
- /
- / case o for output base
- /
- case157:
- jsr pc,in157
- jmp loop
- /
- in157:
- jsr pc,pop
- jes eh
- jsr pc,scalint
- mov r1,-(sp)
- jsr pc,length
- jsr pc,allocate
- mov (sp),r0
- jsr pc,move
- jsr pc,fsfile
- jsr pc,length
- 1:
- cmp r0,$1
- beq 1f
- jsr pc,backspace
- bpl 2f
- jsr pc,chsign
- jsr pc,length
- br 1b
- 2:
- clr sav
- mov r0,-(sp)
- 2:
- jsr pc,backspace
- bes 2f
- mov (sp),r2
- clr r3
- mul $100.,r2
- add r0,r3
- mov r3,(sp)
- tst sav
- beq 3f
- mov r2,r0
- clr r3
- mov sav,r2
- mul $100.,r2
- mov r3,sav
- add r0,sav
- br 2b
- 3:
- mov r2,sav
- br 2b
- 2:
- mov (sp)+,r0
- tst sav
- beq 2f
- mov sav,r0
- jsr pc,log2
- add $16.,r0
- mov r0,logo
- br 3f
- 1:
- jsr pc,backspace
- 2:
- tst r0
- bpl 1f
- mov $15.,logo
- br 3f
- 1:
- jsr pc,log2
- mov r0,logo
- 3:
- jsr pc,release
- mov basptr,r1
- jsr pc,release
- mov (sp),basptr
- /
- / set field widths for output
- / and set output digit handling routines
- /
- mov (sp),r1
- mov $bigout,outdit
- jsr pc,length
- cmp r0,$1.
- bne 2f
- jsr pc,fsfile
- jsr pc,backspace
- cmp r0,$16.
- bhi 2f
- mov $hexout,outdit
- 2:
- jsr pc,length
- jsr pc,allocate
- mov (sp),r0
- jsr pc,move
- clr (sp)
- jsr pc,fsfile
- jsr pc,backspace
- bpl 2f
- add $1.,(sp)
- jsr pc,chsign
- 2:
- mov r1,r2
- mov $1,r0
- jsr pc,allocate
- mov $-1,r0
- jsr pc,putchar
- mov r1,r3
- jsr pc,add3
- jsr pc,length
- asl r0
- add r0,(sp)
- jsr pc,fsfile
- jsr pc,backspace
- cmp r0,$9.
- blos 2f
- add $1,(sp)
- 2:
- jsr pc,release
- mov r2,r1
- jsr pc,release
- mov r3,r1
- jsr pc,release
- mov (sp)+,fw
- mov fw,fw1
- dec fw1
- cmp outdit,$hexout
- bne 2f
- mov $1,fw
- clr fw1
- 2:
- mov $70.,ll
- cmp fw,$70.
- blo 9f; rts pc; 9:
- mov $70.,r1
- clr r0
- dvd fw,r0
- mov r0,r1
- mpy fw,r1
- mov r1,ll
- rts pc
- case117:
- mov basptr,r1
- jsr pc,length
- inc r0
- jsr pc,allocate
- mov basptr,r0
- jsr pc,move
- clr r0
- jsr pc,putchar /scale
- jsr pc,push
- jmp loop
- /
- .data
- fw: 1 /field width for digits
- fw1: 0
- ll: 70. /line length
- .text
- /
- /
- / case k for skale factor
- /
- case153:
- jsr pc,pop
- jes eh
- jsr pc,scalint
- mov w(r1),r0
- sub a(r1),r0
- cmp r0,$1
- jhi eh1
- jsr pc,rewind
- jsr pc,getchar
- jmi eh1
- mov r0,k
- mov r1,-(sp)
- mov scalptr,r1
- jsr pc,release
- mov (sp)+,scalptr
- jmp loop
- /
- case113:
- mov scalptr,r1
- jsr pc,length
- inc r0
- jsr pc,allocate
- mov scalptr,r0
- jsr pc,move
- clr r0
- jsr pc,putchar
- jsr pc,push
- jmp loop
- scalint:
- jsr pc,fsfile
- jsr pc,backspace
- dec w(r1)
- mov r0,r2
- jsr pc,removc
- rts pc
- /
- / case ^ for exponentiation
- /
- case136:
- jsr pc,pop
- jes eh
- jsr pc,scalint
- jsr pc,fsfile
- jsr pc,backspace
- tst r0
- bge 1f
- inc negexp
- jsr pc,chsign
- 1:
- jsr pc,length
- cmp r0,$3
- jhis eh1
- mov r1,r3
- jsr pc,pop
- jes eh
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk
- dec w(r1)
- mov r1,r2
- jsr pc,exp3
- mov r1,-(sp)
- mov r2,r1
- jsr pc,release
- mov r3,r1
- jsr pc,rewind
- jsr pc,getchar
- mov r0,-(sp)
- jsr pc,getchar
- bes 2f
- mov r0,r1
- mul $100.,r1
- add (sp)+,r1
- br 3f
- 2:
- mov (sp)+,r1
- 3:
- mul savk,r1
- mov r1,r2
- mov r3,r1
- jsr pc,release
- tst negexp
- bne 4f
- cmp k,savk
- blo 1f
- mov k,r3
- br 2f
- 1:
- mov savk,r3
- 2:
- cmp r3,r2
- bhis 4f
- sub r3,r2
- mov (sp)+,r1
- mov r3,-(sp)
- jsr pc,removc
- mov (sp)+,r0
- jsr pc,putchar
- jsr pc,push
- br 3f
- 4:
- mov (sp)+,r1
- mov r2,r0
- jsr pc,putchar
- jsr pc,push
- 3:
- tst negexp
- jeq loop
- clr negexp
- jsr pc,pop
- mov r1,-(sp)
- mov $2,r0
- jsr pc,allocate
- mov $1,r0
- jsr pc,putchar
- clr r0
- jsr pc,putchar
- jsr pc,push
- mov (sp)+,r1
- jsr pc,push
- jmp case057
- /
- .bss
- sav: .=.+2
- negexp: .=.+2
- .text
- /
- / case v for square root
- /
- case166:
- jsr pc,pop
- jes eh
- /
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk
- dec w(r1)
- mov w(r1),r2
- sub a(r1),r2
- tst r2
- beq sqz
- jsr pc,backspace
- tst r0
- jmi eh1
- mov k,r2
- asl r2
- sub savk,r2
- beq 1f
- blo 2f
- jsr pc,add0
- br 1f
- 2:
- neg r2
- jsr pc,removc
- 1:
- jsr pc,sqrt
- mov k,r0
- jsr pc,putchar
- jsr pc,push
- jmp loop
- /
- /
- sqz:
- mov savk,r0
- jsr pc,putchar
- jsr pc,push
- jmp loop
- .bss
- sqtemp: .=.+2
- .text
- /
- /
- / case [ for subroutine definition
- /
- case133:
- clr -(sp)
- clr r0
- jsr pc,allocate
- jsr pc,push
- 1: jsr pc,readc
- cmp r0,$']
- bne 3f
- tst (sp)
- beq 1f
- dec (sp)
- br 2f
- 3:
- cmp r0,$'[
- bne 2f
- inc (sp)
- 2:
- jsr pc,putchar
- br 1b
- /
- 1: tst (sp)+
- jmp loop
- /
- /
- / case x for execute top of stack
- /
- case170:
- jsr pc,in170
- jmp loop
- /
- in170:
- jsr pc,pop
- jes eh
- mov r1,-(sp)
- tst *readptr
- beq 1f
- mov *readptr,r1
- cmp r(r1),w(r1)
- bne 1f
- jsr pc,release
- br 2f
- 1:
- add $2,readptr
- cmp readptr,$readtop
- bhis 1f
- 2: mov (sp)+,r1
- mov r1,*readptr
- beq 2f
- jsr pc,rewind
- rts pc
- 2:
- jsr pc,readc
- cmp r0,$'\n
- beq 3f
- mov r0,savec
- 3:
- rts pc
- 1:
- nderr:
- mov $1,r0
- sys write; 1f; 2f-1f
- jmp reset
- 1: <Nesting depth.\n>
- 2: .even
- /
- .data
- readptr: readstack
- .bss
- readstack: .=.+100.
- readtop:
- .text
- /
- / case ? for apl box function
- /
- case077:
- add $2,readptr
- cmp readptr,$readtop
- bhis nderr
- clr *readptr
- in077:
- mov source,-(sp)
- clr source
- jsr pc,readc
- cmp r0,$'!
- bne 1f
- jsr pc,in041
- mov (sp)+,source
- br in077
- 1:
- mov r0,savec
- clr r0
- jsr pc,allocate
- 2:
- jsr pc,readc
- jsr pc,putchar
- 1:
- jsr pc,readc
- jsr pc,putchar
- cmp r0,$'\\
- beq 2b
- cmp r0,$'\n
- bne 1b
- mov (sp)+,source
- mov r1,*readptr
- jmp loop
- /
- /
- / case < for conditional execution
- /
- case074:
- jsr pc,in074
- ble neg074
- jmp aff074
- /
- /
- / case !< for conditional execution
- /
- in74a:
- jsr pc,in074
- bgt inneg
- jmp inaff
- /
- in074:
- jsr pc,in055 /go subtract
- jsr pc,pop
- jsr pc,length
- tst r0
- beq 1f
- jsr pc,fsfile
- jsr pc,backspace
- jsr pc,backspace
- tst r0
- 1:
- rts pc
- /
- aff074:
- jsr pc,release
- jsr pc,in154 /load from register
- jmp case170
- /
- neg074:
- jsr pc,release
- jsr pc,readc
- jmp loop
- /
- /
- / case = for conditional execution
- /
- case075:
- jsr pc,in074
- beq aff074
- jmp neg074
- /
- /
- / case != for conditional execution
- /
- in75a:
- jsr pc,in074
- bne inaff
- jmp inneg
- /
- /
- / case > for conditional execution
- /
- case076:
- jsr pc,in074
- bge neg074
- jmp aff074
- /
- /
- / case !> for conditional execution
- /
- in76a:
- jsr pc,in074
- blt inneg
- jmp inaff
- /
- inaff:
- jsr pc,release
- jsr pc,in154
- jsr pc,in170
- rts pc
- /
- inneg:
- jsr pc,release
- jsr pc,readc
- rts pc
- /
- err:
- mov $1,r0
- sys write; 1f; 2f-1f
- jmp reset
- 1: <Fatal error\n>; 2: .even
- /
- eh1:
- jsr pc,release
- eh:
- movb ch,1f+2
- mov $1,r0
- sys write; 1f; 2f-1f
- mov $readstack,readptr
- mov errstack,sp
- jmp loop
- .data
- 1: <( ) ?\n>
- 2: .even
- .text
- /
- /
- / routine to read and convert a number from the
- / input stream. Numbers beginnig with 0 are
- / converted as octal. Routine converts
- / up to next nonnumeric.
- /
- /
- readin:
- clr dp
- clr dpt
- clr r0
- jsr pc,allocate
- mov r1,-(sp)
- mov strptr,r1
- jsr pc,create
- jsr pc,readc
- 1:
- cmpb ch,$'0
- blt 3f
- cmpb ch,$'9
- bgt 3f
- mov ch,r0
- sub $'0,r0
- 4:
- tst dp
- beq 8f
- cmp dpt,$99.
- beq 5f
- inc dpt
- 8:
- mov chptr,r1
- jsr pc,create
- tst r0
- beq 2f
- jsr pc,putchar
- 2: mov r1,chptr
- mov (sp),r3
- mov inbas,r2
- jsr pc,mul3
- mov r1,(sp)
- mov r3,r1
- jsr pc,release
- mov (sp),r3
- mov chptr,r2
- jsr pc,add3
- mov r1,(sp)
- mov r3,r1
- jsr pc,release
- 5:
- jsr pc,readc
- mov r0,ch
- br 1b
- 3:
- cmpb ch,$'A
- blt 1f
- cmpb ch,$'F
- bgt 1f
- mov ch,r0
- sub $67,r0
- br 4b
- 1:
- cmpb ch,$134 /backslash
- bne 1f
- jsr pc,readc
- br 5b
- 1:
- cmpb ch,$'.
- bne 1f
- tst dp
- bne 1f
- inc dp
- clr dpt
- br 5b
- 1:
- mov r0,savec
- /
- / scale up or down
- 2:
- tst dp
- bne 1f
- mov (sp)+,r1
- clr r0
- jsr pc,putchar
- rts pc
- 1:
- mov (sp),r1
- jsr pc,scale
- mov dpt,r0
- jsr pc,putchar
- tst (sp)+
- rts pc
- /
- .bss
- dp: .=.+2
- dpt: .=.+2
- .text
- /
- scale:
- mov dpt,r2
- jsr pc,add0
- mov r1,-(sp)
- mov $1,r0
- jsr pc,allocate
- mov dpt,r0
- jsr pc,putchar
- mov r1,r3
- mov inbas,r2
- jsr pc,exp3
- mov r1,-(sp)
- mov r3,r1
- jsr pc,release
- mov (sp)+,r2
- mov (sp)+,r3
- jsr pc,div3
- mov r1,-(sp)
- mov r2,r1
- jsr pc,release
- mov r3,r1
- jsr pc,release
- mov r4,r1
- jsr pc,release
- mov (sp)+,r1
- rts pc
- /
- / routine to read another character from the input
- / stream. If the caller does not want the character,
- / it is to be placed in the cell savec.
- / The routine exits to the system on end of file.
- / Character is returned in r0.
- /
- / jsr pc,readc
- / movb r0,...
- /
- /
- readc:
- tst savec
- beq 1f
- movb savec,r0
- bic $177400,r0
- clr savec
- rts pc
- 1:
- tst *readptr
- bne 1f
- 2: mov source,r0
- sys read; ch; 1
- bes eof
- tst r0
- beq eof
- movb ch,r0
- bic $177400,r0
- rts pc
- 1:
- mov r1,-(sp)
- mov *readptr,r1
- jsr pc,getchar
- bes eof1
- bic $177400,r0
- mov r0,ch
- mov (sp)+,r1
- rts pc
- /
- eof:
- tst source
- beq 1f
- clr source
- br 2b
- 1:
- sys exit
- /
- eof1:
- mov *readptr,r1
- beq 2f
- jsr pc,release
- 2:
- sub $2,readptr
- mov (sp)+,r1
- jmp readc
- /
- /
- / case p for print
- /
- case160:
- cmp r5,$pdl
- jeq eh
- jsr pc,in160
- jmp loop
- /
- /
- in160:
- / mov $1,r0
- / sys write; sphdr; 4
- br 1f
- /
- sphdr: < >
- .even
- /
- 1: cmp r5,$pdl
- bne 1f
- mov $1,r0
- sys write; qm; 1
- mov $1,r0
- sys write; nl; 1
- rts pc
- /
- / do the conversion
- /
- 1:
- mov -2(r5),r1
- jsr pc,printf
- rts pc
- /
- /
- / case f for print the stack
- /
- case146:
- mov r5,-(sp)
- 1:
- cmp r5,$pdl
- beq 2f
- 1:
- jsr pc,in160
- jsr pc,pop
- cmp r5,$pdl
- bne 1b
- 2:
- mov $stable-2,r2
- 1:
- tst (r2)+
- cmp r2,$stable+254.
- bhi 1f
- /
- mov (r2),r3
- beq 1b
- movb $'0,7f+3
- mov r2,r0
- sub $stable,r0
- asr r0
- movb r0,7f+1
- 3:
- mov $1,r0
- sys write; 7f; 8f-7f
- .data
- 7: <" (0)">
- 8: .even
- .text
- mov 2(r3),r1
- jsr pc,printf
- tst (r3)
- beq 1b
- incb 7b+3
- mov (r3),r3
- br 3b
- 1:
- mov (sp)+,r5
- jbr loop
- /
- /
- / routine to convert to decimal and print the
- / top element of the stack.
- /
- / jsr pc,printf
- /
- /
- printf:
- mov r4,-(sp)
- mov r3,-(sp)
- mov r2,-(sp)
- mov r1,-(sp)
- mov r0,-(sp)
- clr -(sp)
- jsr pc,rewind
- 2:
- jsr pc,getchar
- bes 2f
- cmp r0,$143
- blos 2b
- cmp r0,$-1
- beq 2b
- bis $1,(sp)
- br 2b
- 2:
- tst (sp)+
- beq 2f
- jsr pc,length
- mov r0,0f
- mov a(r1),3f
- mov $1,r0
- sys 0; 9f
- .data
- 9:
- sys write; 3:.=.+2; 0:.=.+2
- .text
- jbr prout
- 2:
- jsr pc,fsfile
- jsr pc,backspace
- bec 1f
- mov $1,r0
- sys write; asczero; 1
- jbr prout
- 1:
- jsr pc,length
- mov r1,-(sp)
- jsr pc,allocate
- mov (sp),r0
- mov r1,(sp)
- jsr pc,move
- mov ll,count
- / inc count
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,savk
- dec w(r1)
- jsr pc,backspace
- cmpb r0,$-1
- bne 2f
- mov basptr,r1
- jsr pc,fsfile
- jsr pc,backspace
- cmp r0,$-1
- beq 2f
- mov (sp),r1
- jsr pc,chsign
- mov $'-,ch
- jsr pc,wrchar
- br 1f
- 2:
- / mov $' ,ch
- / jsr pc,wrchar
- 1:
- mov strptr,r1
- jsr pc,create
- mov basptr,r1
- jsr pc,length
- cmp r0,$1
- jlo dingout
- bne 1f
- jsr pc,rewind
- jsr pc,getchar
- cmp r0,$1.
- jeq unout
- cmp r0,$-1
- jeq dingout
- cmp r0,$10.
- jeq tenout
- 1:
- mov log10,r1
- mul savk,r1
- clr r0
- div logo,r0
- mov r0,dout
- clr ct
- 1:
- mov (sp),r3
- mov savk,r2
- jsr pc,getdec
- mov r1,decimal
- clr dflg
- mov (sp),r1
- mov savk,r2
- jsr pc,removc
- mov r1,(sp)
- 1:
- mov (sp),r3
- mov basptr,r2
- jsr pc,div3
- mov r1,r2
- mov (sp),r1
- jsr pc,release
- mov r2,(sp)
- mov r4,r1
- jsr pc,*outdit
- mov (sp),r1
- jsr pc,length
- bne 1b
- /
- mov strptr,r1
- jsr pc,fsfile
- 1:
- jsr pc,backspace
- bes 1f
- mov r0,ch
- jsr pc,wrchar
- br 1b
- 1:
- mov (sp)+,r1
- jsr pc,release
- tst savk
- bne 1f
- mov decimal,r1
- jsr pc,release
- br prout
- 1:
- mov dot,ch
- jsr pc,wrchar
- mov strptr,r1
- jsr pc,create
- mov decimal,-(sp)
- inc dflg
- 1:
- mov (sp),r3
- mov basptr,r2
- jsr pc,mul3
- mov r1,(sp)
- mov r3,r1
- jsr pc,release
- mov (sp),r3
- mov savk,r2
- jsr pc,getdec
- mov r1,(sp)
- mov r3,r1
- mov savk,r2
- jsr pc,removc
- jsr pc,*outdit
- mov strptr,r1
- inc ct
- cmp ct,dout
- blo 1b
- mov (sp)+,r1
- jsr pc,release
- mov strptr,r1
- jsr pc,rewind
- 1:
- jsr pc,getchar
- bes 1f
- mov r0,ch
- jsr pc,wrchar
- br 1b
- 1:
- /
- / cleanup, print new line and return
- /
- prout: mov $1,r0
- sys write; nl; 1
- mov (sp)+,r0
- mov (sp)+,r1
- mov (sp)+,r2
- mov (sp)+,r3
- mov (sp)+,r4
- rts pc
- /
- /
- /
- / r2 = count
- / r3 = pointer (not released)
- /
- .bss
- dflg: .=.+2
- dout: .=.+2
- logo: .=.+2
- log10: .=.+2
- decimal: .=.+2
- .text
- getdec:
- mov r3,-(sp)
- mov r3,r1
- jsr pc,rewind
- jsr pc,length
- jsr pc,allocate
- mov r1,-(sp)
- 1:
- cmp r2,$1
- blt 1f
- mov 2(sp),r1
- jsr pc,getchar
- mov (sp),r1
- jsr pc,putchar
- mov r1,(sp)
- sub $2,r2
- br 1b
- 1:
- tst r2
- beq 1f
- mov tenptr,r2
- mov (sp),r3
- jsr pc,mul3
- mov r1,(sp)
- mov r3,r1
- jsr pc,length
- jsr pc,release
- mov r0,r3
- jsr pc,allocate
- mov r1,-(sp)
- mov 2(sp),r1
- jsr pc,rewind
- 2:
- tst r3
- beq 2f
- jsr pc,getchar
- mov (sp),r1
- jsr pc,putchar
- mov r1,(sp)
- dec r3
- mov 2(sp),r1
- br 2b
- 2:
- clr r0
- mov (sp),r1
- jsr pc,putchar
- mov 2(sp),r1
- jsr pc,release
- mov (sp),r3
- mov tenptr,r2
- jsr pc,div3
- mov r1,(sp)
- mov r3,r1
- jsr pc,release
- mov r4,r1
- jsr pc,release
- mov (sp)+,r1
- tst (sp)+
- mov (sp)+,r3
- rts pc
- 1:
- mov (sp)+,r1
- mov (sp)+,r3
- rts pc
- tenout:
- mov savk,ct
- mov $2,r0
- jsr pc,allocate
- mov r1,-(sp)
- mov 2(sp),r1
- jsr pc,fsfile
- jsr pc,backspace
- mov r0,r3
- clr r2
- dvd $10.,r2
- beq 1f
- 3:
- add $60,r2
- mov r2,r0
- mov (sp),r1
- jsr pc,putchar
- mov r1,(sp)
- 1:
- mov (sp),r1
- add $60,r3
- mov r3,r0
- jsr pc,putchar
- mov 2(sp),r1
- 1:
- jsr pc,backspace
- bec 2f
- mov (sp),r1
- jsr pc,length
- cmp r0,ct
- beq 4f
- blo 5f
- sub ct,r0
- mov r0,ct
- 1:
- jsr pc,getchar
- mov r0,ch
- jsr pc,wrchar
- dec ct
- bne 1b
- jsr pc,getchar
- bes 6f
- jsr pc,backspace
- 4:
- movb dot,ch
- jsr pc,wrchar
- 1:
- jsr pc,getchar
- bes 1f
- mov r0,ch
- jsr pc,wrchar
- br 1b
- 5:
- sub r0,ct
- movb dot,ch
- jsr pc,wrchar
- mov $60,ch
- 5:
- jsr pc,wrchar
- dec ct
- bne 5b
- br 1b
- 1:
- 6:
- mov (sp)+,r1
- jsr pc,release
- mov (sp)+,r1
- jsr pc,release
- jbr prout
- 2:
- mov r0,r3
- clr r2
- dvd $10.,r2
- br 3b
- dot: <.>
- .even
- ct: .=.+2
- /
- /
- dingout:
- clr -(sp)
- br 1f
- unout:
- mov $1,-(sp)
- 1:
- mov 2(sp),r1
- mov savk,r2
- jsr pc,removc
- mov r1,2(sp)
- mov strptr,r1
- jsr pc,create
- mov $-1,r0
- jsr pc,putchar
- mov r1,r3
- 1:
- mov 2(sp),r1
- jsr pc,length
- beq 1f
- mov r1,r2
- jsr pc,add3
- mov r1,2(sp)
- mov r2,r1
- jsr pc,release
- mov $1,r0
- tst (sp)
- beq 2f
- mov $'1,ch
- jsr pc,wrchar
- br 1b
- 2:
- tst delflag
- jne in177
- sys write; ding; 3
- br 1b
- 1:
- tst (sp)+
- mov (sp)+,r1
- jsr pc,release
- jmp prout
- /
- ding: <> /<bell prefix form feed>
- sp5: <\\\n >
- minus: <->
- one: <1>
- .even
- .bss
- count: .=.+2
- .text
- /
- bigout:
- mov r1,-(sp) /big digit
- tst dflg
- beq 1f
- clr r0
- jsr pc,allocate
- mov r1,tptr
- 1:
- mov strptr,r1
- jsr pc,length
- add fw,r0
- dec r0
- mov r0,-(sp) /end of field
- clr -(sp) /negative
- mov 4(sp),r1
- jsr pc,length
- bne 2f
- mov $'0,r0
- tst dflg
- beq 3f
- mov tptr,r1
- jsr pc,putchar
- mov r1,tptr
- br 1f
- 3:
- mov strptr,r1
- jsr pc,putchar
- br 1f
- 2:
- mov 4(sp),r1 /digit
- jsr pc,fsfile
- jsr pc,backspace
- bpl 2f
- mov $1,(sp) /negative
- jsr pc,chsign
- 2:
- mov 4(sp),r3 /digit
- mov r3,r1
- jsr pc,length
- beq 1f
- mov tenptr,r2
- jsr pc,div3
- mov r1,4(sp) /digit
- mov r3,r1
- jsr pc,release
- mov r4,r1
- jsr pc,rewind
- jsr pc,getchar
- jsr pc,release
- add $'0,r0
- tst dflg
- beq 3f
- mov tptr,r1
- jsr pc,putchar
- mov r1,tptr
- br 2b
- 3:
- mov strptr,r1
- jsr pc,putchar
- br 2b
- 1:
- tst dflg
- beq 4f
- mov tptr,r1
- jsr pc,length
- cmp r0,fw1
- bhis 2f
- mov fw1,r1
- sub r0,r1
- mov r1,-(sp)
- mov strptr,r1
- 3:
- mov $'0,r0
- jsr pc,putchar
- dec (sp)
- bne 3b
- tst (sp)+
- 2:
- mov tptr,r1
- jsr pc,fsfile
- 2:
- mov tptr,r1
- jsr pc,backspace
- bes 2f
- mov strptr,r1
- jsr pc,putchar
- br 2b
- 2:
- mov tptr,r1
- jsr pc,release
- br 1f
- 4:
- mov strptr,r1
- jsr pc,length
- cmp r0,2(sp) /end of field
- bhis 1f
- mov $'0,r0
- jsr pc,putchar
- br 1b
- 1:
- tst (sp) /negative
- beq 1f
- mov $'-,r0
- mov strptr,r1
- dec w(r1)
- jsr pc,putchar
- 1:
- mov strptr,r1
- mov $' ,r0
- jsr pc,putchar
- tst (sp)+
- tst (sp)+
- mov (sp)+,r1
- jsr pc,release
- rts pc
- /
- .bss
- tptr: .=.+2
- tenptr: .=.+2
- .text
- /
- /
- /
- hexout:
- mov r1,-(sp)
- jsr pc,rewind
- jsr pc,getchar
- cmp r0,$16.
- blo 1f
- jmp err
- 1:
- add $60,r0
- cmp r0,$'9
- blos 2f
- add $'A-'9-1,r0
- 2:
- mov strptr,r1
- jsr pc,putchar
- mov (sp)+,r1
- jsr pc,release
- rts pc
- /
- /
- wrchar:
- tst delflag
- jne in177
- mov $1,r0
- tst count
- bne 7f
- sys write; sp5; 2
- mov ll,count
- mov $1,r0
- 7:
- dec count
- sys write; ch; 1
- rts pc
- /
- /
- / case P for print an ascii string
- /
- /
- case120:
- jsr pc,pop
- jes eh
- jsr pc,length
- mov r0,0f
- mov a(r1),3f
- mov $1,r0
- sys 0; 9f
- jsr pc,release
- jmp loop
- .data
- 9: sys write; 3:.=.+2; 0:.=.+2
- .text
- /
- /
- / here for unimplemented stuff
- /
- junk:
- movb r0,1f
- mov $1,r0
- sys write; 1f; 2f-1f
- jmp loop
- .data
- 1: <0 not in switch.\n>
- 2: .even
- .text
- /
- /
- /
- / routine to place one word onto the pushdown list
- / Error exit to system on overflow.
- /
- /
- push:
- mov r1,(r5)+
- cmp r5,$pdltop
- bhis pdlout
- rts pc
- /
- pdlout:
- mov $1,r0
- sys write; 1f; 2f-1f
- jmp reset
- 1: <Out of pushdown.\n>
- 2: .even
- /
- /
- / routine to remove one word from the pushdown list
- / carry bit set on empty stack
- /
- /
- / jsr pc,pop
- /
- pop:
- cmp r5,$pdl
- bhi 1f
- clr r1
- sec
- rts pc
- 1: mov -(r5),r1
- clc
- rts pc
- /
- /
- /
- /
- .data
- outdit: hexout
- .bss
- source: .=.+2
- savec: .=.+2
- ch: .=.+2
- .text
- nl: <\n>
- asczero: <0>
- qm: <?\n>
- .even
- /
- .bss
- chptr: .=.+2
- strptr: .=.+2
- basptr: .=.+2
- scalptr: .=.+2
- errstack:.=.+2
- /
- stable: .=.+512.
- .text
- casetab:
- case012; 012 /nl
- loop; 040 /sp
- case041; 041 /!
- case045; 045 /%
- case052; 052 /*
- case053; 053 /+
- case055; 055 /-
- case060; 056 /.
- case057; 057 //
- case060; 060 /0
- case060; 061 /1
- case060; 062 /2
- case060; 063 /3
- case060; 064 /4
- case060; 065 /5
- case060; 066 /6
- case060; 067 /7
- case060; 070 /8
- case060; 071 /9
- case072; 072 /:
- case073; 073 /;
- case074; 074 /<
- case075; 075 /=
- case076; 076 />
- case077; 077 /?
- case060; 101 /A
- case060; 102 /B
- case060; 103 /C
- case060; 104 /D
- case060; 105 /E
- case060; 106 /F
- case111; 111 /I
- case113; 113 /K
- case114; 114 /L
- case117; 117 /O
- case120; 120 /P
- case121; 121 /Q
- case123; 123 /S
- case166; 126 /V
- case170; 130 /X
- case172; 132 /Z
- case133; 133 /[
- case136; 136 /^
- case137; 137 /_
- case143; 143 /c
- case144; 144 /d
- case146; 146 /f
- case151; 151 /i
- case153; 153 /k
- case154; 154 /l
- case157; 157 /o
- case160; 160 /p
- case161; 161 /q
- case163; 163 /s
- case166; 166 /v
- case170; 170 /x
- case172; 172 /z
- 0;0
- /
- .bss
- pdl: .=.+100.
- pdltop:
- .text
-
- reset:
- clr r0
- sys seek; 0; 2
- 1:
- clr r0
- sys read; rathole; 1
- bes 1f
- tst r0
- beq 1f
- cmpb rathole,$'q
- bne 1b
- 1:
- sys exit
- .bss
- rathole: .=.+2
- .text
-