sms@wlv.imsd.contel.com (Steven M. Schultz) (12/28/89)
Subject: /lib/as2 can't be built shared or split +FIX Index: bin/as/as2?.s 2.10BSD Description: The second phase of the assembler (/lib/as2) can not be built either sharedtext (-n) or split-I/D (-i) due to intermixing of data and text, missing .text/.data directives, use of a subroutine calling convention which places arguments inline with text (jsr r5,xxx;arg rather than mov arg,-(sp);jsr pc,xxx), reusing text space as an I/O bufffer, ad nauseum. Building /lib/as2 either -n or -i allows the system to cache the text, speeding loading on subsequent use. Repeat-By: Attempt to build /lib/as2 with either -n or -i set into SEPFLAGS, observe the resulting mess. Fix: Apply the patches below. There is one patch for as13.s, the earlier posting which fixed /bin/as missed a "jsr r5," call. Also, the I/O buffers have been increased from 512 to 1024 so as to match the filesystem block size. Happy New Year! diff -c as.old/Makefile as/Makefile *** as.old/Makefile Wed Dec 13 16:42:56 1989 --- as/Makefile Sun Dec 24 02:06:24 1989 *************** *** 16,22 **** as2: ${AS2SRC} ${AS} ${ASFLAGS} -o as2.o as2?.s ! ld -o $@ as2.o -lc install: install -s as ${DESTDIR}/bin --- 16,22 ---- as2: ${AS2SRC} ${AS} ${ASFLAGS} -o as2.o as2?.s ! ld ${SEPFLAG} -o $@ as2.o -lc install: install -s as ${DESTDIR}/bin diff -c as.old/as13.s as/as13.s *** as.old/as13.s Wed Dec 13 16:43:11 1989 --- as/as13.s Sun Dec 24 19:27:40 1989 *************** *** 42,48 **** 1: bitb $37,(r4) beq 1f ! jsr r5,error; 'm 1: bisb dot-2,(r4) mov dot,2(r4) --- 42,49 ---- 1: bitb $37,(r4) beq 1f ! mov $'m,r5 ! jsr pc,error 1: bisb dot-2,(r4) mov dot,2(r4) diff -c as.old/as21.s as/as21.s *** as.old/as21.s Sun Feb 8 14:26:13 1987 --- as/as21.s Wed Dec 27 12:35:36 1989 *************** *** 31,37 **** / read in symbol table ! mov $usymtab,r1 1: jsr pc,getw bvs 1f --- 31,37 ---- / read in symbol table ! mov usymtab,r1 1: jsr pc,getw bvs 1f *************** *** 101,107 **** tst (sp)+ / sys close mov (sp)+,r1 ! jsr r5,ofile; a.tmp1 mov r0,fin clr ibufc jsr pc,setup --- 101,108 ---- tst (sp)+ / sys close mov (sp)+,r1 ! mov a.tmp1,-(sp) ! jsr pc,ofile mov r0,fin clr ibufc jsr pc,setup *************** *** 141,147 **** sbc r0 mov r0,datseek mov r3,datseek+2 / txtsiz+20 ! mov $usymtab,r1 1: jsr pc,doreloc add $4,r1 --- 142,148 ---- sbc r0 mov r0,datseek mov r3,datseek+2 / txtsiz+20 ! mov usymtab,r1 1: jsr pc,doreloc add $4,r1 *************** *** 149,163 **** blo 1b clr r0 clr r1 ! jsr r5,oset; txtp mov trelseek,r0 mov trelseek+2,r1 ! jsr r5,oset; relp mov $8.,r2 mov $txtmagic,r1 1: mov (r1)+,r0 ! jsr r5,putw; txtp dec r2 bne 1b jsr pc,assem --- 150,167 ---- blo 1b clr r0 clr r1 ! mov $txtp,-(sp) ! jsr pc,oset mov trelseek,r0 mov trelseek+2,r1 ! mov $relp,-(sp) ! jsr pc,oset mov $8.,r2 mov $txtmagic,r1 1: mov (r1)+,r0 ! mov $txtp,-(sp) ! jsr pc,putw dec r2 bne 1b jsr pc,assem *************** *** 164,171 **** /polish off text and relocation ! jsr r5,flush; txtp ! jsr r5,flush; relp / append full symbol table --- 168,177 ---- /polish off text and relocation ! mov $txtp,-(sp) ! jsr pc,flush ! mov $relp,-(sp) ! jsr pc,flush / append full symbol table *************** *** 182,212 **** clr ibufc mov symseek,r0 mov symseek+2,r1 ! jsr r5,oset; txtp ! mov $usymtab,r1 1: jsr pc,getw bvs 1f mov r4,r0 ! jsr r5,putw; txtp jsr pc,getw mov r4,r0 ! jsr r5,putw; txtp jsr pc,getw mov r4,r0 ! jsr r5,putw; txtp jsr pc,getw mov r4,r0 ! jsr r5,putw; txtp mov (r1)+,r0 ! jsr r5,putw; txtp mov (r1)+,r0 ! jsr r5,putw; txtp jsr pc,getw jsr pc,getw br 1b 1: ! jsr r5,flush; txtp jmp aexit saexit: --- 188,226 ---- clr ibufc mov symseek,r0 mov symseek+2,r1 ! mov $txtp,-(sp) ! jsr pc,oset ! mov usymtab,r1 1: jsr pc,getw bvs 1f mov r4,r0 ! mov $txtp,-(sp) ! jsr pc,putw jsr pc,getw mov r4,r0 ! mov $txtp,-(sp) ! jsr pc,putw jsr pc,getw mov r4,r0 ! mov $txtp,-(sp) ! jsr pc,putw jsr pc,getw mov r4,r0 ! mov $txtp,-(sp) ! jsr pc,putw mov (r1)+,r0 ! mov $txtp,-(sp) ! jsr pc,putw mov (r1)+,r0 ! mov $txtp,-(sp) ! jsr pc,putw jsr pc,getw jsr pc,getw br 1b 1: ! mov $txtp,-(sp) ! jsr pc,flush jmp aexit saexit: *************** *** 246,262 **** jsr pc,__exit / _exit(errflg ? 2 : 0) / sys exit filerr: ! mov *(r5),r5 ! tst -(sp) / write(1, r5, strlen(r5)) ! mov r5,-(sp) mov $1,-(sp) - clr r0 1: ! tstb (r5)+ ! beq 2f ! inc r0 ! br 1b ! 2: mov r0,4(sp) jsr pc,_write add $6,sp --- 260,274 ---- jsr pc,__exit / _exit(errflg ? 2 : 0) / sys exit filerr: ! mov 2(sp),r0 / filename string. no need to clean ! tst -(sp) / stack, this routine goes to saexit. ! mov r0,-(sp) mov $1,-(sp) 1: ! tstb (r0)+ ! bne 1b ! sub 2(sp),r0 ! dec r0 mov r0,4(sp) jsr pc,_write add $6,sp *************** *** 297,303 **** jsr pc,_brk / sys indir; 9f tst (sp)+ / .data .data /9: sys sbreak; 0: end ! 0: end / .text .text 1: mov (sp)+,r1 --- 309,315 ---- jsr pc,_brk / sys indir; 9f tst (sp)+ / .data .data /9: sys sbreak; 0: end ! 0: _end / .text .text 1: mov (sp)+,r1 *************** *** 321,336 **** ofile: mov r1,-(sp) / protect r1 from library ! clr -(sp) / open(*(r5), O_RDONLY, 0) ! clr -(sp) / mov *(r5),0f ! mov *(r5),-(sp) / sys indir; 9f ! jsr pc,_open / .data ! add $6,sp /9: sys open; 0:..; 0 ! mov (sp)+,r1 / .text ! tst r0 / bes 1f bmi 1f ! ! tst (r5)+ ! rts r5 1: jmp filerr --- 333,347 ---- ofile: mov r1,-(sp) / protect r1 from library ! clr -(sp) / open(r0, O_RDONLY, 0) ! clr -(sp) ! mov 10(sp),-(sp) ! jsr pc,_open ! add $6,sp ! mov (sp)+,r1 ! tst r0 bmi 1f ! mov (sp)+,(sp) ! rts pc 1: jmp filerr diff -c as.old/as22.s as/as22.s *** as.old/as22.s Sun Feb 8 14:26:13 1987 --- as/as22.s Sun Dec 24 16:53:18 1989 *************** *** 20,26 **** / external references mov $666,outmod / make nonexecutable mov xsymbol,r3 ! sub $usymtab,r3 asl r3 bis $4,r3 / external relocation br 3f --- 20,26 ---- / external references mov $666,outmod / make nonexecutable mov xsymbol,r3 ! sub usymtab,r3 asl r3 bis $4,r3 / external relocation br 3f *************** *** 33,39 **** cmp r3,$34 bne 7f 6: ! jsr r5,error; 'r 7: mov $1,r3 / make absolute 4: --- 33,40 ---- cmp r3,$34 bne 7f 6: ! mov $'r,-(sp) ! jsr pc,error 7: mov $1,r3 / make absolute 4: *************** *** 57,68 **** asl r3 bis (sp)+,r3 mov r2,r0 ! jsr r5,putw; txtp mov tseekp,r0 add $2,2(r0) adc (r0) mov r3,r0 ! jsr r5,putw; relp mov rseekp,r0 add $2,2(r0) adc (r0) --- 58,71 ---- asl r3 bis (sp)+,r3 mov r2,r0 ! mov $txtp,-(sp) ! jsr pc,putw mov tseekp,r0 add $2,2(r0) adc (r0) mov r3,r0 ! mov $relp,-(sp) ! jsr pc,putw mov rseekp,r0 add $2,2(r0) adc (r0) *************** *** 69,81 **** 8: rts pc 1: ! jsr r5,error; 'o clr r3 jsr pc,outb rts pc 9: ! jsr r5,error; 'x rts pc outb: --- 72,86 ---- 8: rts pc 1: ! mov $'o,-(sp) ! jsr pc,error clr r3 jsr pc,outb rts pc 9: ! mov $'x,-(sp) ! jsr pc,error rts pc outb: *************** *** 83,89 **** beq 9b cmp r3,$1 blos 1f ! jsr r5,error; 'r 1: tstb passno beq 2f --- 88,95 ---- beq 9b cmp r3,$1 blos 1f ! mov $'r,-(sp) ! jsr pc,error 1: tstb passno beq 2f *************** *** 90,98 **** mov r2,r0 bit $1,dot bne 1f ! jsr r5,putw; txtp clr r0 ! jsr r5,putw; relp mov tseekp,r0 add $2,2(r0) adc (r0) --- 96,106 ---- mov r2,r0 bit $1,dot bne 1f ! mov $txtp,-(sp) ! jsr pc,putw clr r0 ! mov $relp,-(sp) ! jsr pc,putw mov tseekp,r0 add $2,2(r0) adc (r0) *************** *** 130,137 **** jsr pc,_write add $6,sp ! mov (r5)+,r0 ! movb r0,0f mov line,r3 mov $0f+6,r0 mov $4,r1 --- 138,144 ---- jsr pc,_write add $6,sp ! movb 12(sp),0f mov line,r3 mov $0f+6,r0 mov $4,r1 *************** *** 153,172 **** mov (sp)+,r1 mov (sp)+,r2 mov (sp)+,r3 ! rts r5 .data 0: <f xxxx\n> .even .text - - betwen: - cmp r0,(r5)+ - blt 1f - cmp (r5)+,r0 - blt 2f - 1: - tst (r5)+ - 2: - rts r5 - --- 160,169 ---- mov (sp)+,r1 mov (sp)+,r2 mov (sp)+,r3 ! mov (sp)+,(sp) ! rts pc .data 0: <f xxxx\n> .even .text diff -c as.old/as23.s as/as23.s *** as.old/as23.s Sun Feb 8 14:26:13 1987 --- as/as23.s Sun Dec 24 02:04:13 1989 *************** *** 33,39 **** movb dotrel,r0 asl r0 cmp dot,txtsiz-4(r0) ! blos ealoop mov dot,txtsiz-4(r0) eal1: jmp ealoop --- 33,41 ---- movb dotrel,r0 asl r0 cmp dot,txtsiz-4(r0) ! bhi 8f ! jmp ealoop ! 8: mov dot,txtsiz-4(r0) eal1: jmp ealoop *************** *** 43,49 **** bhis 1f cmp r4,$2 beq 3f ! jsr r5,error; 'x br assem 1: tstb passno --- 45,52 ---- bhis 1f cmp r4,$2 beq 3f ! mov $'x,-(sp) ! jsr pc,error br assem 1: tstb passno *************** *** 56,62 **** cmp r0,$34 ble 5f 6: ! jsr r5,error; 'm 5: bic $37,(r4) bis dotrel,(r4) --- 59,66 ---- cmp r0,$34 ble 5f 6: ! mov $'m,-(sp) ! jsr pc,error 5: bic $37,(r4) bis dotrel,(r4) *************** *** 67,73 **** 2: cmp dot,2(r4) beq assem ! jsr r5,error; 'p br assem 3: mov numval,r4 --- 71,78 ---- 2: cmp dot,2(r4) beq assem ! mov $'p,-(sp) ! jsr pc,error br assem 3: mov numval,r4 *************** *** 107,118 **** tst (sp)+ br dotmax 2: ! jsr r5,error; '. br ealoop 1: cmp r3,$40 bne 1f ! jsr r5,error; 'r 1: bic $37,(r1) bic $!37,r3 --- 112,125 ---- tst (sp)+ br dotmax 2: ! mov $'.,-(sp) ! jsr pc,error br ealoop 1: cmp r3,$40 bne 1f ! mov $'r,-(sp) ! jsr pc,error 1: bic $37,(r1) bic $!37,r3 *************** *** 162,165 **** mov r1,nxtfb(r4) asr r4 rts pc - --- 169,171 ---- diff -c as.old/as24.s as/as24.s *** as.old/as24.s Sun Feb 8 14:26:13 1987 --- as/as24.s Sun Dec 24 18:01:10 1989 *************** *** 6,30 **** oset: mov r2,-(sp) mov r3,-(sp) ! mov (r5)+,r3 mov r1,r2 ! bic $!777,r1 add r3,r1 add $8,r1 mov r1,(r3)+ / next slot mov r3,r1 ! add $1006,r1 mov r1,(r3)+ / buf max mov r0,(r3)+ mov r2,(r3)+ / seek addr mov (sp)+,r3 mov (sp)+,r2 ! rts r5 putw: mov r1,-(sp) mov r2,-(sp) ! mov (r5)+,r2 mov (r2)+,r1 / slot cmp r1,(r2) / buf max bhis 1f --- 6,31 ---- oset: mov r2,-(sp) mov r3,-(sp) ! mov 6(sp),r3 mov r1,r2 ! bic $!1777,r1 add r3,r1 add $8,r1 mov r1,(r3)+ / next slot mov r3,r1 ! add $2006,r1 mov r1,(r3)+ / buf max mov r0,(r3)+ mov r2,(r3)+ / seek addr mov (sp)+,r3 mov (sp)+,r2 ! mov (sp)+,(sp) ! rts pc putw: mov r1,-(sp) mov r2,-(sp) ! mov 6(sp),r2 mov (r2)+,r1 / slot cmp r1,(r2) / buf max bhis 1f *************** *** 34,40 **** 1: tst (r2)+ mov r0,-(sp) ! jsr r5,flush1 mov (sp)+,r0 mov r0,*(r2)+ add $2,-(r2) --- 35,41 ---- 1: tst (r2)+ mov r0,-(sp) ! jsr pc,flush1 mov (sp)+,r0 mov r0,*(r2)+ add $2,-(r2) *************** *** 41,50 **** 2: mov (sp)+,r2 mov (sp)+,r1 ! rts r5 flush: ! mov (r5)+,r2 cmp (r2)+,(r2)+ flush1: --- 42,53 ---- 2: mov (sp)+,r2 mov (sp)+,r1 ! mov (sp)+,(sp) ! rts pc flush: ! mov 2(sp),r2 ! mov (sp)+,(sp) cmp (r2)+,(r2)+ flush1: *************** *** 51,57 **** clr -(sp) / lseek(fout, (r2)L+, L_SET) mov 2(r2),-(sp) / mov (r2)+,0f mov (r2)+,-(sp) / mov (r2)+,r1 ! tst (r2)+ / mov r1,0f+2 / seek address mov fout,-(sp) / mov fout,r0 jsr pc,_lseek / sys indir; 9f add $8.,sp / .data --- 54,60 ---- clr -(sp) / lseek(fout, (r2)L+, L_SET) mov 2(r2),-(sp) / mov (r2)+,0f mov (r2)+,-(sp) / mov (r2)+,r1 ! tst (r2)+ / mov r1,0f+2 mov fout,-(sp) / mov fout,r0 jsr pc,_lseek / sys indir; 9f add $8.,sp / .data *************** *** 58,68 **** /9: sys lseek; 0:..; ..; 0 / .text cmp -(sp),-(sp) / write(fout, <buf>, <len>) ! bic $!777,r1 add r2,r1 / write address mov r1,-(sp) / { <buf> } mov r2,r0 ! bis $777,-(r2) add $1,(r2) / new seek addr adc -(r2) cmp -(r2),-(r2) --- 61,71 ---- /9: sys lseek; 0:..; ..; 0 / .text cmp -(sp),-(sp) / write(fout, <buf>, <len>) ! bic $!1777,r1 add r2,r1 / write address mov r1,-(sp) / { <buf> } mov r2,r0 ! bis $1777,-(r2) add $1,(r2) / new seek addr adc -(r2) cmp -(r2),-(r2) *************** *** 78,86 **** mov (sp)+,r1 tst r0 jmi wrterr - rts r5 - wrterr: mov $8f-9f,-(sp) / write(1, ERRMSG, strlen(ERRMSG)) mov $9f,-(sp) / mov $1,r0 --- 81,88 ---- mov (sp)+,r1 tst r0 jmi wrterr + rts pc wrterr: mov $8f-9f,-(sp) / write(1, ERRMSG, strlen(ERRMSG)) mov $9f,-(sp) / mov $1,r0 *************** *** 104,110 **** blo 1f cmp r4,$4000 blo 2f ! add $usymtab-4000,r4 rts pc 2: add $symtab-1000,r4 --- 106,113 ---- blo 1f cmp r4,$4000 blo 2f ! add usymtab,r4 ! sub $4000,r4 rts pc 2: add $symtab-1000,r4 *************** *** 121,129 **** bgt 1f mov r1,-(sp) / protect r1 from library ! mov $512.,-(sp) / read(fin, inbuf, 512) mov $inbuf,-(sp) / movb fin,r0 ! mov fin,-(sp) / sys read; inbuf; 512. jsr pc,_read / bes 3f add $6,sp mov (sp)+,r1 --- 124,132 ---- bgt 1f mov r1,-(sp) / protect r1 from library ! mov $1024.,-(sp) / read(fin, inbuf, 1024) mov $inbuf,-(sp) / movb fin,r0 ! mov fin,-(sp) / sys read; inbuf; 1024. jsr pc,_read / bes 3f add $6,sp mov (sp)+,r1 diff -c as.old/as26.s as/as26.s *** as.old/as26.s Sun Feb 8 14:26:14 1987 --- as/as26.s Sun Dec 24 02:41:14 1989 *************** *** 5,12 **** opline: mov r4,r0 ! jsr r5,betwen; 0; 177 ! br 2f cmp r4,$5 beq opeof cmp r4,$'< --- 5,13 ---- opline: mov r4,r0 ! bmi 2f ! cmp r0,$177 ! bgt 2f cmp r4,$5 beq opeof cmp r4,$'< *************** *** 26,33 **** beq xpr cmp r0,$34 / est data beq xpr ! jsr r5,betwen; 5; 36 ! br xpr mov 2(r4),-(sp) mov r0,-(sp) jsr pc,readop --- 27,36 ---- beq xpr cmp r0,$34 / est data beq xpr ! cmp r0,$5 ! blt xpr ! cmp r0,$36 ! bgt xpr mov 2(r4),-(sp) mov r0,-(sp) jsr pc,readop *************** *** 37,43 **** clr swapf mov $-1,rlimit jmp *1f-10.(r0) ! 1: opl5 opl6 --- 40,46 ---- clr swapf mov $-1,rlimit jmp *1f-10.(r0) ! .data 1: opl5 opl6 *************** *** 65,70 **** --- 68,74 ---- xxpr opl35 opl36 + .text opeof: mov $1,line *************** *** 115,121 **** asr (sp) cmp (sp),rlimit blo 1f ! jsr r5,error; 'x 1: bis (sp)+,r2 bis (sp)+,r2 --- 119,126 ---- asr (sp) cmp (sp),rlimit blo 1f ! mov $'x,-(sp) ! jsr pc,error 1: bis (sp)+,r2 bis (sp)+,r2 *************** *** 203,210 **** sub dot,r2 neg r2 mov r2,r0 ! jsr r5,betwen; -2; 175 ! br 2f add $4,r2 br 1f --- 208,217 ---- sub dot,r2 neg r2 mov r2,r0 ! cmp r0,$-2 ! blt 2f ! cmp r0,$175 ! bgt 2f add $4,r2 br 1f *************** *** 216,223 **** dobranch: sub dot,r2 mov r2,r0 ! jsr r5,betwen; -254.; 256. ! br 2f 1: bit $1,r2 bne 2f --- 223,232 ---- dobranch: sub dot,r2 mov r2,r0 ! cmp r0,$-254. ! blt 2f ! cmp r0,$256. ! bgt 2f 1: bit $1,r2 bne 2f *************** *** 232,238 **** jsr pc,outw rts pc 2: ! jsr r5,error; 'b clr r2 br 3b --- 241,248 ---- jsr pc,outw rts pc 2: ! mov $'b,-(sp) ! jsr pc,error clr r2 br 3b *************** *** 309,315 **** tst (sp)+ rts pc - /.globl opl23: cmp r4,$200 --- 319,324 ---- *************** *** 336,343 **** mov dot,savdot-4(r1) tstb passno beq 1f ! jsr r5,flush; txtp ! jsr r5,flush; relp mov (sp),r2 asl r2 add $txtseek-[4*25],r2 --- 345,354 ---- mov dot,savdot-4(r1) tstb passno beq 1f ! mov $txtp,-(sp) ! jsr pc,flush ! mov $relp,-(sp) ! jsr pc,flush mov (sp),r2 asl r2 add $txtseek-[4*25],r2 *************** *** 344,355 **** mov r2,tseekp mov (r2),r0 mov 2(r2),r1 ! jsr r5,oset; txtp add $trelseek-txtseek,r2 mov (r2),r0 mov 2(r2),r1 mov r2,rseekp ! jsr r5,oset; relp 1: mov (sp)+,r0 mov savdot-[2*25](r0),dot --- 355,368 ---- mov r2,tseekp mov (r2),r0 mov 2(r2),r1 ! mov $txtp,-(sp) ! jsr pc,oset add $trelseek-txtseek,r2 mov (r2),r0 mov 2(r2),r1 mov r2,rseekp ! mov $relp,-(sp) ! jsr pc,oset 1: mov (sp)+,r0 mov savdot-[2*25](r0),dot *************** *** 478,484 **** astar: tst (sp) beq 1f ! jsr r5,error; '* 1: mov $10,(sp) jsr pc,readop --- 491,498 ---- astar: tst (sp) beq 1f ! mov $'*,-(sp) ! jsr pc,error 1: mov $10,(sp) jsr pc,readop *************** *** 485,491 **** jmp 4b errora: ! jsr r5,error; 'a rts pc checkreg: --- 499,506 ---- jmp 4b errora: ! mov $'a,-(sp) ! jsr pc,error rts pc checkreg: *************** *** 504,516 **** rts pc errore: ! jsr r5,error; 'e rts pc checkrp: cmp r4,$') beq 1f ! jsr r5,error; ') rts pc 1: jsr pc,readop --- 519,533 ---- rts pc errore: ! mov $'e,-(sp) ! jsr pc,error rts pc checkrp: cmp r4,$') beq 1f ! mov $'),-(sp) ! jsr pc,error rts pc 1: jsr pc,readop *************** *** 529,537 **** ble 1f sub brdelt,r0 1: ! jsr r5,betwen; -254.; 256. ! br 1f ! br 2f 1: mov r1,-(sp) bic $!7,(sp) --- 546,555 ---- ble 1f sub brdelt,r0 1: ! cmp r0,$-254. ! blt 1f ! cmp r0,$256. ! ble 2f 1: mov r1,-(sp) bic $!7,(sp) diff -c as.old/as27.s as/as27.s *** as.old/as27.s Sun Feb 8 14:26:14 1987 --- as/as27.s Sun Dec 24 21:29:19 1989 *************** *** 15,29 **** jsr pc,readop 1: mov r4,r0 ! jsr r5,betwen; 0; 177 ! br .+4 ! br 7f movb (r4),r0 tst r0 bne 1f tstb passno beq 1f ! jsr r5,error; 'u 1: tst overlaid beq 0f --- 15,31 ---- jsr pc,readop 1: mov r4,r0 ! blt 6f ! cmp r0,$177 ! ble 7f ! 6: movb (r4),r0 tst r0 bne 1f tstb passno beq 1f ! mov $'u,-(sp) ! jsr pc,error 1: tst overlaid beq 0f *************** *** 67,73 **** rts pc 1: jmp *(r1) ! esw1: '+; binop '-; binop --- 69,75 ---- rts pc 1: jmp *(r1) ! .data esw1: '+; binop '-; binop *************** *** 84,90 **** 2; exnum1 '!; binop 200; 0 ! binop: cmpb (sp),$'+ beq 1f --- 86,92 ---- 2; exnum1 '!; binop 200; 0 ! .text binop: cmpb (sp),$'+ beq 1f *************** *** 111,117 **** jsr pc,expres1 cmp r4,$'] beq 1f ! jsr r5,error; '] 1: mov r3,r0 mov r2,r1 --- 113,120 ---- jsr pc,expres1 cmp r4,$'] beq 1f ! mov $'],-(sp) ! jsr pc,error 1: mov r3,r0 mov r2,r1 *************** *** 128,134 **** br eoprnd 1: jmp *(r5) ! exsw2: '+; exadd '-; exsub --- 131,137 ---- br eoprnd 1: jmp *(r5) ! .data exsw2: '+; exadd '-; exsub *************** *** 142,148 **** '^; excmbin '!; exnot 200; 0 ! excmbin: mov r0,r3 br eoprnd --- 145,151 ---- '^; excmbin '!; exnot 200; 0 ! .text excmbin: mov r0,r3 br eoprnd *************** *** 154,165 **** clc ror r2 exlsh: ! jsr r5,combin; relte2 als r1,r2 br eoprnd exmod: ! jsr r5,combin; relte2 mov r3,r0 mov r2,r3 clr r2 --- 157,170 ---- clc ror r2 exlsh: ! mov $relte2,r5 ! jsr pc,combin als r1,r2 br eoprnd exmod: ! mov $relte2,r5 ! jsr pc,combin mov r3,r0 mov r2,r3 clr r2 *************** *** 169,202 **** br eoprnd exadd: ! jsr r5,combin; reltp2 add r1,r2 br eoprnd exsub: ! jsr r5,combin; reltm2 sub r1,r2 br eoprnd exand: ! jsr r5,combin; relte2 com r1 bic r1,r2 br eoprnd exor: ! jsr r5,combin; relte2 bis r1,r2 br eoprnd exmul: ! jsr r5,combin; relte2 mpy r2,r1 mov r1,r2 br eoprnd exdiv: ! jsr r5,combin; relte2 mov r3,r0 mov r2,r3 clr r2 --- 174,213 ---- br eoprnd exadd: ! mov $reltp2,r5 ! jsr pc,combin add r1,r2 br eoprnd exsub: ! mov $reltm2,r5 ! jsr pc,combin sub r1,r2 br eoprnd exand: ! mov $relte2,r5 ! jsr pc,combin com r1 bic r1,r2 br eoprnd exor: ! mov $relte2,r5 ! jsr pc,combin bis r1,r2 br eoprnd exmul: ! mov $relte2,r5 ! jsr pc,combin mpy r2,r1 mov r1,r2 br eoprnd exdiv: ! mov $relte2,r5 ! jsr pc,combin mov r3,r0 mov r2,r3 clr r2 *************** *** 205,211 **** br eoprnd exnot: ! jsr r5,combin; relte2 com r1 add r1,r2 br eoprnd --- 216,223 ---- br eoprnd exnot: ! mov $relte2,r5 ! jsr pc,combin com r1 add r1,r2 br eoprnd *************** *** 230,236 **** 1: tst r0 beq 1f ! cmp (r5)+,$reltm2 bne 2f cmp r0,r3 bne 2f --- 242,248 ---- 1: tst r0 beq 1f ! cmp r5,$reltm2 bne 2f cmp r0,r3 bne 2f *************** *** 237,247 **** mov $1,r3 br 2f 1: - tst (r5)+ clr r3 2: bis (sp)+,r3 ! rts r5 combin1: mov r1,-(sp) clr maxtyp --- 249,258 ---- mov $1,r3 br 2f 1: clr r3 2: bis (sp)+,r3 ! rts pc combin1: mov r1,-(sp) clr maxtyp *************** *** 250,267 **** mpy $6,r1 mov r3,r0 jsr pc,maprel ! add (r5)+,r0 add r1,r0 movb (r0),r3 bpl 1f cmp r3,$-1 beq 2f ! jsr r5,error; 'r 2: mov maxtyp,r3 1: mov (sp)+,r1 ! rts r5 maprel: cmp r0,$40 --- 261,279 ---- mpy $6,r1 mov r3,r0 jsr pc,maprel ! add r5,r0 add r1,r0 movb (r0),r3 bpl 1f cmp r3,$-1 beq 2f ! mov $'r,-(sp) ! jsr pc,error 2: mov maxtyp,r3 1: mov (sp)+,r1 ! rts pc maprel: cmp r0,$40 *************** *** 279,285 **** mov $1,r0 1: rts pc ! X = -2 M = -1 reltp2: --- 291,297 ---- mov $1,r0 1: rts pc ! .data X = -2 M = -1 reltp2: *************** *** 305,308 **** .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X ! --- 317,320 ---- .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X .byte 0, X, X, X, X, X ! .text diff -c as.old/as28.s as/as28.s *** as.old/as28.s Sun Feb 8 14:26:14 1987 --- as/as28.s Sun Dec 24 15:13:11 1989 *************** *** 2,12 **** / / as8 -- PDP-11 assembler pass 2 ! qnl: <?\n> a.out: <a.out\0> .even - .data a.outp: a.out a.tmp1: 0 --- 2,11 ---- / / as8 -- PDP-11 assembler pass 2 ! .data qnl: <?\n> a.out: <a.out\0> .even a.outp: a.out a.tmp1: 0 *************** *** 67,79 **** maxtyp: .=.+2 relfil: .=.+2 ibufp: .=.+2 ! txtp: .=.+8+512. ! relp: .=.+8+512. swapf: .=.+2 rlimit: .=.+2 passno: .=.+2 endtable:.=.+2 ! usymtab:.=.+20. ! end: ! .text --- 66,78 ---- maxtyp: .=.+2 relfil: .=.+2 ibufp: .=.+2 ! txtp: .=.+8+1024. ! relp: .=.+8+1024. swapf: .=.+2 rlimit: .=.+2 passno: .=.+2 endtable:.=.+2 ! inbuf: .=.+1024. ! .data ! usymtab: _end .text diff -c as.old/as29.s as/as29.s *** as.old/as29.s Tue Aug 22 17:12:29 1989 --- as/as29.s Sun Dec 24 15:06:33 1989 *************** *** 229,234 **** --- 229,235 ---- 27;000000 /.bss 32;000000 /.comm + .text start: mov (sp)+,r0 tst (sp)+ *************** *** 263,273 **** mov r1,a.tmp1 mov (sp)+,a.tmp2 mov (sp)+,a.tmp3 ! jsr r5,ofile; a.tmp1 mov r0,txtfil ! jsr r5,ofile; a.tmp2 mov r0,fbfil ! jsr r5,ofile; a.tmp3 mov r0,symf mov r0,fin --- 264,277 ---- mov r1,a.tmp1 mov (sp)+,a.tmp2 mov (sp)+,a.tmp3 ! mov a.tmp1,-(sp) ! jsr pc,ofile mov r0,txtfil ! mov a.tmp2,-(sp) ! jsr pc,ofile mov r0,fbfil ! mov a.tmp3,-(sp) ! jsr pc,ofile mov r0,symf mov r0,fin *************** *** 279,292 **** mov (sp)+,r1 tst r0 jpl 1f ! ! jsr r5,filerr; a.outp 1: mov r0,fout jmp go ! a.outp1: a.out ! ! / overlaid buffer ! inbuf = start ! . = inbuf+512. --- 283,293 ---- mov (sp)+,r1 tst r0 jpl 1f ! mov a.outp,-(sp) ! jsr pc,filerr 1: mov r0,fout jmp go ! .data a.outp1: a.out ! .text