INTS=em2_t--- em2_---- em2_t-cp em2_t-c- em2_t--p \
em4_t--- em4_---- em4_t-cp em4_t-c- em4_t--p
P = mloop
-FILES=deffile $P0 $P1 $P2 $P3 $P4 $P5 $P6 $P7 $P8 $P9 $Pa $Pb $Pc $Pe
+FILES=deffile $P0 $P1 $P2 $P3 $P4 $P5 $P6 $P7 $P8 $P9 $Pa $Pb $Pc
CPP=../../../lib/cpp
b=../../../lib/int
all: $(INTS) em
em: em.c
- cc -o em -I../../../h em.c
+ $(CC) -o em -I../../../h em.c
-em2_t---: $(FILES)
+em2_t---: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dopfreq=0 -Dlast=1 -Dcount=0 -Dtest=1 -Dflow=0 -Dprof=0 >tmp.s
- m68k2 -o em2_t--- tmp.s
+ ./compile -o em2_t--- tmp.s
rm -f tmp.s
-em2_----: $(FILES)
+em2_----: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dopfreq=0 -Dlast=0 -Dcount=0 -Dtest=0 -Dflow=0 -Dprof=0 >tmp.s
- m68k2 -o em2_---- tmp.s
+ ./compile -o em2_---- tmp.s
rm -f tmp.s
-em2_t-cp: $(FILES)
+em2_t-cp: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dopfreq=0 -Dlast=1 -Dcount=1 -Dtest=1 -Dflow=0 -Dprof=1 >tmp.s
- m68k2 -o em2_t-cp tmp.s
+ ./compile -o em2_t-cp tmp.s
rm -f tmp.s
-em2_t-c-: $(FILES)
+em2_t-c-: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dopfreq=0 -Dlast=1 -Dcount=1 -Dtest=1 -Dflow=0 -Dprof=0 >tmp.s
- m68k2 -o em2_t-c- tmp.s
+ ./compile -o em2_t-c- tmp.s
rm -f tmp.s
-em2_t--p: $(FILES)
+em2_t--p: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dopfreq=0 -Dlast=1 -Dcount=0 -Dtest=1 -Dflow=0 -Dprof=1 >tmp.s
- m68k2 -o em2_t--p tmp.s
+ ./compile -o em2_t--p tmp.s
rm -f tmp.s
-em4_t---: $(FILES)
+em4_t---: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dlword -Dopfreq=0 -Dlast=1 -Dcount=0 -Dtest=1 -Dflow=0 -Dprof=0 >tmp.s
- m68k2 -o em4_t--- tmp.s
+ ./compile -o em4_t--- tmp.s
rm -f tmp.s
-em4_----: $(FILES)
+em4_----: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dlword -Dopfreq=0 -Dlast=0 -Dcount=0 -Dtest=0 -Dflow=0 -Dprof=0 >tmp.s
- m68k2 -o em4_---- tmp.s
+ ./compile -o em4_---- tmp.s
rm -f tmp.s
-em4_t-cp: $(FILES)
+em4_t-cp: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dlword -Dopfreq=0 -Dlast=1 -Dcount=1 -Dtest=1 -Dflow=0 -Dprof=1 >tmp.s
- m68k2 -o em4_t-cp tmp.s
+ ./compile -o em4_t-cp tmp.s
rm -f tmp.s
-em4_t-c-: $(FILES)
+em4_t-c-: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dlword -Dopfreq=0 -Dlast=1 -Dcount=1 -Dtest=1 -Dflow=0 -Dprof=0 >tmp.s
- m68k2 -o em4_t-c- tmp.s
+ ./compile -o em4_t-c- tmp.s
rm -f tmp.s
-em4_t--p: $(FILES)
+em4_t--p: $(FILES) compile
cat $(FILES) | $(CPP) -P -Dlword -Dopfreq=0 -Dlast=1 -Dcount=0 -Dtest=1 -Dflow=0 -Dprof=1 >tmp.s
- m68k2 -o em4_t--p tmp.s
+ ./compile -o em4_t--p tmp.s
rm -f tmp.s
+compile: Makefile
+ case `ack_sys` in sun*) MACH=sun2;; pmds*) MACH=pmds4;; \
+ m68_sysV_0) MACH=mantra;; *) MACH=m68k4;; \
+ esac ; echo $$MACH -.m '$$*' > compile; chmod +x compile
install: all
-mkdir $b24 $b44
ls em2_???? | sed 's:em2_\(.*\):cp & $b24/em_\1:' | sh
-cmp em.1 ../../../man/em.1
clean:
- -rm -f *.o *.old a.out em tmp.s $(INTS)
+ -rm -f *.o *.old a.out em tmp.s $(INTS) compile
opr:
make pr | opr
#define l_8 -16
#define checksize cmp.w #2,d0 ; beq 2f ; cmp.w #4,d0 ; beq 4f ; bra e_oddz
#endif
-#define adroff move.b (a3)+,(a1) ; move.b (a3)+,1(a1)
+#define adroff move.b (a3)+,(a5) ; move.b (a3)+,1(a5)
#define claimstack tst.b -1024(sp)
#define locptr cmp.l sp,a0 ;\
bcc 6f
.define filb
+ .define _m_a_i_n
.define curproc
.define pd
.define nproc
! START OF THE PROGRAM
!---------------------------------------------------------------------------
- lea retarea,a1 !a1 POINTS AT RETURN AREA
+_m_a_i_n:
+ tst.l (sp)+
+ lea retarea,a5 !a5 POINTS AT RETURN AREA
move.l nd,-(sp) !nd contains endbss
bsr _Xbreak
add.l wrd,sp
#if last
move.l #126,d0 !initialise lasttable
- lea lasttable,a5
-0: clr.l (a5)+
+ lea lasttable,a1
+0: clr.l (a1)+
dbra d0,0b
- move.l #-1,(a5)
+ move.l #-1,(a1)
move.l #linused-8,linused
#endif
move.l 4(sp),a2
bne badarg1
lea header,a0
move.l #5,d0 !convert em integer to integer
-0: add.l #4,a1
- move.b (a0)+,-(a1) ; move.b (a0)+,-(a1)
- move.b (a0)+,-(a1) ; move.b (a0)+,-(a1)
- move.l (a1),-4(a0) ; dbra d0,0b
+0: add.l #4,a5
+ move.b (a0)+,-(a5) ; move.b (a0)+,-(a5)
+ move.b (a0)+,-(a5) ; move.b (a0)+,-(a5)
+ move.l (a5),-4(a0) ; dbra d0,0b
move.l nd,a0 ; move.l a0,pb !Bottom emtext
add.l ntext,a0 ; move.l a0,pd !proc. descr. base
move.l nproc,d1 ; asl.l #3,d1 !2 pointers
lblbuf: sub.l #2048,sp
claimstack
move.l sp,a4 !transport ptr a4
- move.l sp,a5
+ move.l sp,a1
+ move.l a1,-(sp)
move.l #2048,-(sp) ; move.l a4,-(sp)
mov savefd,-(sp) ; bsr _Xread
testen (sp)+ ; bne badarg
move.l (sp)+,d0
+ move.l (sp)+,a1
cmp.l #2048,d0 ; bcs 0f
- add.l #1024,a5 ; bra 1f !a5 =buffer middle
-0: add.l d0,a5 !a5 = buffer end
+ add.l #1024,a1 ; bra 1f !a1 =buffer middle
+0: add.l d0,a1 !a1 = buffer end
1: move.l eb,a3 !At a3 filling has to start
clr.l d1 ; clr.l d2
move.l #datswi,a6
-datloop: cmp.l a4,a5 ; bhi 9f !Go on filling data
+datloop: cmp.l a4,a1 ; bhi 9f !Go on filling data
bsr blshift !shift block down , read next block
9: sub.l #1,ndata ; blt finito
move.b (a4)+,d1 ; beq dat0 !type byte in d1
.data4 dat5; .data4 dat6; .data4 dat6; .data4 dofloat
.sect .text
-dat0: add.l #4,a1
- move.b (a4)+,-(a1) ; move.b (a4)+,-(a1)
- move.b (a4)+,-(a1) ; move.b (a4)+,-(a1)
- move.l (a1),d0 ; move.l a3,d4 !d0 =count
+dat0: add.l #4,a5
+ move.b (a4)+,-(a5) ; move.b (a4)+,-(a5)
+ move.b (a4)+,-(a5) ; move.b (a4)+,-(a5)
+ move.l (a5),d0 ; move.l a3,d4 !d0 =count
sub.l a2,d4 !reconstruct byte count of previous describtor
sub.l #1,d0 ; sub.l #1,d4
1: move.l d4,d3
atof: tst.b (a4)+ ; bne atof
rts
-blshift: move.l a5,a0 ; move.l #1024,d0
+blshift: move.l a1,a0 ; move.l #1024,d0
+ tst.l -(sp)
sub.l d0,a0 ; move.l d0,-(sp)
sub.l d0,a4 !update pointer
asr.l #2,d0
-0: move.l (a5)+,(a0)+ ; sub.w #1,d0
- bgt 0b ; move.l a0,a5
- move.l a5,-(sp) ; mov savefd,-(sp)
+0: move.l (a1)+,(a0)+ ; sub.w #1,d0
+ bgt 0b ; move.l a0,a1
+ move.l a1,4(sp)
+ move.l a1,-(sp) ; mov savefd,-(sp)
bsr _Xread
testen (sp)+ ; bne badarg
move.l (sp)+,d0
+ move.l (sp)+,a1
cmp.l #1024,d0 ; beq 1f
- add.l d0,a5
+ add.l d0,a1
1: rts
finito: cmp.l hp,a3 ; bne badarg !load file error
move.l nproc,d1 ; move.l pd,a3
asl.l #3,d1 !proc. descr. is 8 bytes
-4: move.l a5,d2 ; sub.l a4,d2 !What is available?
+4: move.l a1,d2 ; sub.l a4,d2 !What is available?
add.l #7,d2 ; and.w #-0x8,d2 !multiple of 8!
sub.l d2,d1 !subtract what can
asr.l #3,d2 !be read. divide by 8
! Count pointer zero is reserved for the case that no line number
! is yet defined.
-! Register use: a6 is external base ("eb"), a1 points at return area, other
+! Register use: a6 is external base ("eb"), a5 points at return area, other
! registers are free
makelink: move.l pd,a0
move.l #0,a2
move.l a0,a3 !a3 will point at the first proc.
move.l a0,a4 !a4 will point at proc descr base
-0: move.l a0,a5 !keep former descr pointer in a5
+0: move.l a0,a1 !keep former descr pointer in a1
add.l #24,a0 !a0 points at next one
cmp.l a0,a6 !top of descriptor space
bls 4f !yes? ready!
1: move.l 4(a0),d0 !start address of current proc in d0
- cmp.l 4(a5),d0 !compair start address with previous
+ cmp.l 4(a1),d0 !compair start address with previous
bcc 2f !d0 large? follow link!
- sub.l #24,a5 !d0 small? compair with previous
- cmp.l a5,a4 !is a5 smaller than pd
+ sub.l #24,a1 !d0 small? compair with previous
+ cmp.l a1,a4 !is a1 smaller than pd
bls 1b !no? try again
move.l a3,16(a0) !yes? then smallest text add up to now
move.l a0,a3 !remind a3 is to point at first proc
bra 0b !next descriptor
-2: move.l 16(a5),d1 !follow the link to find place
+2: move.l 16(a1),d1 !follow the link to find place
beq 3f !if 0 then no link defined
move.l d1,a2
cmp.l 4(a2),d0 !compair start address
- bcs 3f !start addr between those of a5 and a2
- move.l a2,a5 !d0 above start address of a5
+ bcs 3f !start addr between those of a1 and a2
+ move.l a2,a1 !d0 above start address of a1
bra 2b !go on looking
-3: move.l a0,16(a5) !a0 follows a5
+3: move.l a0,16(a1) !a0 follows a1
move.l d1,16(a0) !a2 follows a0
bra 0b
4: move.l a3,firstp !firstp links to first procedure
-! Register use: a3 points at first procedure , d0 opcode byte , a5 base of
+! Register use: a3 points at first procedure , d0 opcode byte , a1 base of
! table , d1 keeps min line nr , d2 keeps max line nr , d3 current line nr ,
! maxcount in d4
bra 4f
3: adroff
move.l #0,d3
- move.w (a1),d3
+ move.w (a5),d3
bra 4f
6: move.b (a3)+,d0
cmp.b #35,d0 !lin_q ?
bne 6f !skip for escape2 at 6f
- move.b (a3)+,(a1)+
- move.b (a3)+,(a1)+
- move.b (a3)+,(a1)+
- move.b (a3)+,(a1)
- sub.l #3,a1
- move.l (a1),d3
+ move.b (a3)+,(a5)+
+ move.b (a3)+,(a5)+
+ move.b (a3)+,(a5)+
+ move.b (a3)+,(a5)
+ sub.l #3,a5
+ move.l (a5),d3
4: cmp.l d1,d3 !d3 less than minimum ?
bcc 5f
move.l d3,d1
add.w d0,d0 !opcode to index in table
add.w d0,d0
#if prof
+ lea timeinf,a1
+ move.l 0(a1,d0),d1 !get operation time
move.l profile,a0
- lea timeinf,a5
- move.l 0(a5,d0),d1 !get operation time
add.l d1,(a0)
#endif
#if opfreq
- lea counttab,a5
- add.l #1,0(a5,d0)
+ lea counttab,a0
+ add.l #1,0(a0,d0)
#endif
jmp dispat(pc,d0) !jump to branch to the operation
cmp.w #640,d0 !check for range
bhi e_illins !jump to ill instruction procedure
#if prof
- lea timeinf1,a5
- move.l 0(a5,d0),d1
+ lea timeinf1,a1
+ move.l 0(a1,d0),d1
add.l d1,(a0)
#endif
#if opfreq
- lea counttab+1024,a5
- add.l #1,0(a5,d0)
+ lea counttab+1024,a0
+ add.l #1,0(a0,d0)
#endif
jmp dispae1(pc,d0) !jump to the operation
cmp.w #220,d0
bhi e_illins
#if prof
- lea timeinf2,a5
- move.l 0(a5,d0),d1
+ lea timeinf2,a1
+ move.l 0(a1,d0),d1
add.l d1,(a0)
#endif
#if opfreq
- lea counttab+1664,a5
- add.l #1,0(a5,d0)
+ lea counttab+1664,a1
+ add.l #1,0(a1,d0)
#endif
jmp dispae2(pc,d0)
jmp (a4)
lpi_l:
adroff
- move.w (a1),d0
+ move.w (a5),d0
move.l d0,-(sp)
jmp (a4)
lpi_q: jmp (a4)
bra e_illins
#endif
loc_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
mov d0,-(sp)
jmp (a4)
jmp (a4)
ldc_l:
adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0 !ext works only on d register
4: move.l d0,-(sp)
#ifdef lword
mov 0(a2,d0),-(sp)
jmp (a4)
lol_pw: adroff
- move.w (a1),d0
+ move.w (a5),d0
5: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
jmp (a4)
lol_nw: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
2: asl.l wmu,d0
add.l a2,d0
mov (a0),-(sp)
jmp (a4)
ldl_pw: adroff
- move.w (a1),d0
+ move.w (a5),d0
5: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
mov l0(a0),-(sp)
jmp (a4)
ldl_nw: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 2b
ldl_qpw: move.l (sp)+,d0
!-------------------------------------------------------------------------
loe_lw: adroff
- move.w (a1),d0
+ move.w (a5),d0
bra 1f
loe_qw: move.l (sp)+,d0
bra 1f
jmp (a4)
lde_lw: adroff
- move.w (a1),d0
+ move.w (a5),d0
bra 1f
lde_qw: move.l (sp)+,d0
bra 1f
mov (a0),-(sp)
jmp (a4)
lil_pw: adroff
- move.w (a1),d0
+ move.w (a5),d0
bra 1f
lil_qpw: move.l (sp)+,d0
bra 1f
jmp (a4)
lil_nw: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 1f
lil_qnw: move.l (sp)+,d0
move.b (a3)+,d0
bra 1f
lof_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 1f
lof_q: move.l (sp)+,d0
lof_3W: move.l wrd+word+word,d0 ; bra 1b
lof_4W: move.l wrd+word+word+word,d0 ; bra 1b
ldf_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
2: move.l (sp)+,a0
add.l d0,a0
!-------------------------------------------------------------------------
lal_p: adroff
- move.w (a1),d0
+ move.w (a5),d0
bra 1f
lal_qp: move.l (sp)+,d0
1: add.l #0+l0,d0
add.l #0+l0,d0
bra 3f
lal_n: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 4f
lal_qn: move.l (sp)+,d0
bra 2b
lae_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
1: add.l a6,d0
move.l d0,-(sp)
jmp (a4)
lxl_1: move.l l0(a2),-(sp)
jmp (a4)
lxl_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
beq 5f
bgt 1f
blt e_oddz
lxa_1: move.l #0,d0
bra 3f
lxa_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
bgt 1f
blt e_oddz
pea l0(a2)
loi_l: adroff
clr.l d1
- move.w (a1),d1
+ move.w (a5),d1
bra 8f
loi_s0: move.l #0,d1
move.b (a3)+,d1
los_z: mov (sp)+,d0
bra 0f
los_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
0: checksize
2: move.l #0,d1 ; move.w (sp)+,d1 ; bra 8b
4: move.l (sp)+,d1 ; bra 8b
!---------------------------------------------------------------------
stl_pw: adroff
- move.w (a1),d0
+ move.w (a5),d0
3: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
bra 3b
stl_nw: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 1f
stl_qnw: move.l (sp)+,d0
mov (sp)+,word(a0)
jmp (a4)
sdl_nw: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 2b
sdl_qnw: move.l (sp)+,d0
sdl_qpw: move.l (sp)+,d0
bra 4f
sdl_pw: adroff
- move.w (a1),d0
+ move.w (a5),d0
4: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
sde_q: move.l (sp)+,d0
bra 1f
sde_l: adroff
- move.w (a1),d0
+ move.w (a5),d0
1: add.l a6,d0
move.l d0,a0
#if test
ste_qw: move.l (sp)+,d0
bra 1f
ste_lw: adroff
- move.w (a1),d0
+ move.w (a5),d0
bra 1f
ste_w2: move.w #512,d0 ; bra 0f
ste_w1: move.w #256,d0 ; bra 0f
bra 0f
stf_l: adroff
move.l #0,a0
- move.w (a1),a0
+ move.w (a5),a0
bra 0f
stf_2W: move.l wrd+word,d0 ; move.l d0,a0
bra 0f
bra 1f
sdf_l: adroff
move.l d6,a0
- move.w (a1),a0
+ move.w (a5),a0
1: add.l (sp)+,a0
#if test
locptr
mov (sp)+,(a0)
jmp (a4)
sil_pw: adroff
- move.w (a1),d0
+ move.w (a5),d0
bra 5b
sil_qpw: move.l (sp)+,d0
bra 5b
sil_nw: adroff
- move.w (a1),d0
+ move.w (a5),d0
ext.l d0
bra 2b
sil_qnw: move.l (sp)+,d0
move.b word-1(sp),(a0)
add.l wrd,sp
jmp (a4)
-sti_l: adroff ; move.w (a1),d0 ; bra 0f
+sti_l: adroff ; move.w (a5),d0 ; bra 0f
sti_s0: clr.w d0 ; move.b (a3)+,d0
0: asr.l #1,d0 ; bne 1f
bcs sti_1 ; bra e_oddz
4: mov (sp)+,(a0)+
dbra d0,4b
jmp (a4)
-sts_l: adroff ; move.w (a1),d0
+sts_l: adroff ; move.w (a5),d0
6: checksize
4: move.l (sp)+,d0; bra 0b
2: move.w (sp)+,d0; bra 0b
!------------------------------------------------------------------------------
! POINTER ARITHMETIC
!------------------------------------------------------------------------------
-adp_l: adroff ; move.w (a1),d0
+adp_l: adroff ; move.w (a5),d0
ext.l d0
add.l d0,(sp); jmp (a4)
adp_q: move.l (sp)+,d0 ; add.l d0,(sp)
add.l d0,(sp); jmp (a4)
adp_s_1: move.l #-1,d0 ; move.b (a3)+,d0
add.l d0,(sp) ; jmp (a4)
-ads_l: adroff ; move.w (a1),d0
+ads_l: adroff ; move.w (a5),d0
bra 0f
ads_z: mov (sp)+,d0
0: checksize
ads_1W: mov (sp)+,d0
extend d0
add.l d0,(sp); jmp (a4)
-sbs_l: adroff ; move.w (a1),d0
+sbs_l: adroff ; move.w (a5),d0
bra 0f
sbs_z: mov (sp)+,d0 !d0 contains objectsize
0: checksize
inl_w_1: move.l #-1,d0 ; move.b (a3)+,d0
2: asl.l wmu,d0
1: move.l a2,a0 ; add.l d0,a0 ; bra 4b
-inl_pw: adroff ; move.w (a1),d0
+inl_pw: adroff ; move.w (a5),d0
6: asl.l wmu,d0 ; add.l #0+l0,d0
bra 1b
inl_qpw: move.l (sp)+,d0 ; bra 6b
-inl_nw: adroff ; move.w (a1),d0
+inl_nw: adroff ; move.w (a5),d0
ext.l d0 ; bra 2b
inl_qnw: move.l (sp)+,d0 ; bra 2b
-ine_lw: adroff ; move.w (a1),d0 ; bra 5f
+ine_lw: adroff ; move.w (a5),d0 ; bra 5f
ine_qw: move.l (sp)+,d0 ; bra 5f
ine_w0: clr.w d0 ; move.b (a3)+,d0
5: asl.l wmu,d0 ; move.l d0,a0
del_w_1: move.l #-1,d0 ; move.b (a3)+,d0
1: asl.l wmu,d0
2: move.l a2,a0 ; add.l d0,a0 ; bra 4b
-del_pw: adroff ; move.w (a1),d0
+del_pw: adroff ; move.w (a5),d0
5: asl.l wmu,d0 ; add.l #0+l0,d0 ; bra 2b
del_qpw: move.l (sp)+,d0 ; bra 5b
-del_nw: adroff ; move.w (a1),d0
+del_nw: adroff ; move.w (a5),d0
ext.l d0 ; bra 1f
del_qnw: move.l (sp)+,d0 ; bra 1f
dee_w0: clr.w d0 ; move.b (a3)+,d0
0: asl.l wmu,d0 ; move.l d0,a0
add.l a6,a0 ; bra 4b
-dee_lw: adroff ; move.w (a1),d0 ; bra 0b
+dee_lw: adroff ; move.w (a5),d0 ; bra 0b
dee_qw: move.l (sp)+,d0 ; bra 0b
#if test
#endif
cl (a0)
jmp (a4)
-zrl_nw: adroff ; move.w (a1),d0
+zrl_nw: adroff ; move.w (a5),d0
ext.l d0 ; bra 1b
zrl_qnw: move.l (sp)+,d0 ; bra 1b
-zrl_pw: adroff ; move.w (a1),d0
+zrl_pw: adroff ; move.w (a5),d0
2: asl.l wmu,d0 ; add.l a2,d0
move.l d0,a0 ; cl l0(a0)
jmp (a4)
zrl_qpw: move.l (sp)+,d0 ; bra 2b
-zre_lw: adroff ; move.w (a1),d0 ; bra 7f
+zre_lw: adroff ; move.w (a5),d0 ; bra 7f
zre_qw: move.l (sp)+,d0 ; bra 7f
zre_w0: clr.w d0 ; move.b (a3)+,d0
7: asl.l wmu,d0 ; add.l a6,d0
#endif
cl (a0)
jmp (a4)
-zrf_l: adroff ; move.w (a1),d0 ; bra 8f
+zrf_l: adroff ; move.w (a5),d0 ; bra 8f
zrf_z: mov (sp)+,d0
8: move.l d7,d1
3: asr.w #1,d0 ; dbcs d1,3b
0: cl -(sp) ; dbra d0,0b
jmp (a4)
zer_s0: clr.w d0 ; move.b (a3)+,d0 ; bra 8b
-zer_l: adroff ; move.w (a1),d0 ; bra 8b
+zer_l: adroff ; move.w (a5),d0 ; bra 8b
zer_z: mov (sp),d0 ; bra 8b
! The test on illegal argument takes some time , specially in 4byte case.
and_1W: mov (sp)+,d1
an d1,(sp)
jmp (a4)
-and_l: adroff ; move.w (a1),d0 ; bra 1f
+and_l: adroff ; move.w (a5),d0 ; bra 1f
and_z: mov (sp)+,d0
1: ble e_oddz ; move.l d0,a0
move.l d7,d2
ior_1W: mov (sp)+,d1; inor d1,(sp)
jmp (a4)
ior_s0: clr.w d0 ; move.b (a3)+,d0; bra 4f
-ior_l: adroff ; move.w (a1),d0 ; bra 4f
+ior_l: adroff ; move.w (a5),d0 ; bra 4f
ior_z: mov (sp)+,d0
4: ble e_oddz ; move.l d0,a0
move.l d7,d2
!----------------------------------------------------------------------------
-xor_l: adroff ; move.w (a1),d0 ; bra 6f
+xor_l: adroff ; move.w (a5),d0 ; bra 6f
xor_z: mov (sp)+,d0
6: ble e_oddz ; move.l d0,a0
move.l d7,d2
!----------------------------------------------------------------------------
-com_l: adroff ; move.w (a1),d0 ; bra 0f
+com_l: adroff ; move.w (a5),d0 ; bra 0f
com_z: mov (sp)+,d0
0: ble e_oddz ; move.l d7,d2
1: asr.l #1,d0 ; dbcs d2,1b ; bcs e_oddz
!---------------------------------------------------------------------------
-rol_l: adroff ; move.w (a1),d0 ; bra 3f
+rol_l: adroff ; move.w (a5),d0 ; bra 3f
rol_z: mov (sp)+,d0
3: ble e_oddz ; move.l d7,d2
4: asr.l #1,d0 ; dbcs d2,4b
jmp (a4)
2: nega d1 ; bra 0f
2: nega d1 ; bra 0b
-ror_l: adroff ; move.w (a1),d0 ; bra 6f
+ror_l: adroff ; move.w (a5),d0 ; bra 6f
ror_z: mov (sp)+,d0
6: ble e_oddz ; move.l d7,d2
7: asr.l #1,d0 ; dbcs d2,7b
#endif
bchg #0,d2 ; add.l d2,a0
bset d1,(a0) ; jmp (a4) !d1 mod 8 bit set
-set_l: adroff ; move.w (a1),d0 ; bra 0b
+set_l: adroff ; move.w (a5),d0 ; bra 0b
set_z: mov (sp)+,d0; bra 0b
!----------------------------------------------------------------------------
btst d1,(a0) ; beq 7f
mov #1,-(sp); jmp (a4)
7: cl -(sp) ; jmp (a4)
-inn_l: adroff ; move.w (a1),d0 ; bra 0b
+inn_l: adroff ; move.w (a5),d0 ; bra 0b
inn_z: mov (sp)+,d0; bra 0b
aar_1W: bsr calcarr ; move.l a0,-(sp)
jmp (a4)
-aar_l: adroff ; cmp.w wrd,(a1)
+aar_l: adroff ; cmp.w wrd,(a5)
0: bne e_illins ; bra aar_1W
aar_z: comp wrd,(sp)+ ; bra 0b
7: mov -(a0),-(sp); dbra d1,7b
jmp (a4)
-lar_l: adroff ; cmp.w wrd,(a1)
+lar_l: adroff ; cmp.w wrd,(a5)
8: bne e_illins; bra lar_1W
lar_z: comp wrd,(sp)+ ; bra 8b
7: mov (sp)+,(a0)+ ; dbra d1,7b
jmp (a4)
sar_z: comp wrd,(sp)+ ; bra 1f
-sar_l: adroff ; cmp.w wrd,(a1)
+sar_l: adroff ; cmp.w wrd,(a5)
1: bne e_illins ; bra sar_1W
!-------------------------------------------------------------------------
! SIGNED INTEGER ARITHMETIC
!------------------------------------------------------------------------------
-adi_l: adroff ; move.w (a1),d0 ; bra 1f
+adi_l: adroff ; move.w (a5),d0 ; bra 1f
adi_z: mov (sp)+,d0
1: sub.w wrd,d0 ; beq adi_1W
sub.w wrd,d0 ; beq adi_2W
!--------------------------------------------------------------------------
sbi_z: mov (sp)+,d0 ; bra 1f
-sbi_l: adroff ; move.w (a1),d0
+sbi_l: adroff ; move.w (a5),d0
1: sub.w wrd,d0 ; beq sbi_1W
sub.w wrd,d0 ; beq sbi_2W
bra e_oddz
!----------------------------------------------------------------------------
mli_z: mov (sp)+,d0 ; bra 0f
-mli_l: adroff ; move.w (a1),d0
+mli_l: adroff ; move.w (a5),d0
0: sub.w wrd,d0 ; beq mli_1W
sub.w wrd,d0 ; beq mli_2W
bra e_oddz
!---------------------------------------------------------------------------
dvi_z: mov (sp)+,d0 ; bra 0f
-dvi_l: adroff ; move.w (a1),d0
+dvi_l: adroff ; move.w (a5),d0
0: sub.w wrd,d0 ; beq dvi_1W
sub.w wrd,d0 ; beq dvi_2W
bra e_oddz
jmp (a4)
rmi_z: mov (sp)+,d0 ; bra 1f
-rmi_l: adroff ; move.w (a1),d0
+rmi_l: adroff ; move.w (a5),d0
1: sub.l wrd,d0 ; beq rmi_1W
sub.l wrd,d0 ; beq rmi_2W
bra e_oddz
!----------------------------------------------------------------------------
ngi_z: mov (sp)+,d0 ; bra 0f
-ngi_l: adroff ; move.w (a1),d0
+ngi_l: adroff ; move.w (a5),d0
0: sub.l wrd,d0 ; bne 2f
#if test
comp und,(sp) ; bne 1f
!--------------------------------------------------------------------------
sli_z: mov (sp)+,d0 ; bra 0f
-sli_l: adroff ; move.w (a1),d0
+sli_l: adroff ; move.w (a5),d0
0: sub.w wrd,d0 ; beq sli_1W
sub.w wrd,d0 ; beq sli2
bra e_oddz
#endif
sri_z: mov (sp)+,d0 ; bra 0f
-sri_l: adroff ; move.w (a1),d0
+sri_l: adroff ; move.w (a5),d0
0: sub.w wrd,d0 ; bne sri2
mov (sp)+,d0
bmi 7b
!-----------------------------------------------------------------------------
adu_z: mov (sp)+,d0 ; bra 0f
-adu_l: adroff ; move.w (a1),d0
+adu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; add.w d1,(sp)
jmp (a4)
jmp (a4)
sbu_z: mov (sp)+,d0 ; bra 0f
-sbu_l: adroff ; move.w (a1),d0
+sbu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; sub.w d1,(sp)
jmp (a4)
!------------------------------------------------------------------------------
mlu_z: mov (sp)+,d0 ; bra 0f
-mlu_l: adroff ; move.w (a1),d0
+mlu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0 ; mulu (sp),d0
move.w d0,(sp) ; jmp (a4)
!----------------------------------------------------------------------------
dvu_z: mov (sp)+,d0 ; bra 0f
-dvu_l: adroff ; move.w (a1),d0
+dvu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; beq 3f
move.w (sp),d0 ; divu d1,d0
!----------------------------------------------------------------------------
rmu_z: mov (sp)+,d0 ; bra 0f
-rmu_l: adroff ; move.w (a1),d0
+rmu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d1 ; beq 3f
move.w (sp),d0 ; divu d1,d0
!------------------------------------------------------------------------.
slu_z: mov (sp)+,d0 ; bra 0f
-slu_l: adroff ; move.w (a1),d0
+slu_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0
bmi 7f
9: nega d0 ; bra 5b
sru_z: mov (sp)+,d0 ; bra 0f
-sru_l: adroff ; move.w (a1),d0
+sru_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0
bmi 7b
! DUMMY FLOATING POINT ROUTINES
!------------------------------------------------------------------------------
adf_l: sbf_l: mlf_l: dvf_l:
- adroff ; move.w (a1),d0
+ adroff ; move.w (a5),d0
1: add.l d0,sp
#ifdef FLTRAP
bra flnim
!-----------------------------------------------------------------------------
cmi_z: mov (sp)+,d0 ; bra 0f
-cmi_l: adroff ; move.w (a1),d0
+cmi_l: adroff ; move.w (a5),d0
0: sub.w wrd,d0 ; beq cmi_1W
sub.w wrd,d0 ; beq cmi_2W
bra e_oddz
bra 1b
cmu_z: mov (sp)+,d0 ; bra 4f
-cmu_l: adroff ; move.w (a1),d0
+cmu_l: adroff ; move.w (a5),d0
4: sub.w wrd,d0 ; bne 5f
comp (sp)+,(sp)+ ; bcs 3b
beq 2b ; bra 1b
cmp_z: cmp.l (sp)+,(sp)+ ; bcs 3b
beq 2b ; bra 1b
-cms_l: adroff ; move.w (a1),d0
+cms_l: adroff ; move.w (a5),d0
bra 0f
cms_z: mov (sp)+,d0 ; bra 0f
cms_s0: move.l d6,d0 ; move.b (a3)+,d0
#else
jmp (a4)
#endif
-cmf_l: adroff ; move.w (a1),d0 ; bra 9b
+cmf_l: adroff ; move.w (a5),d0 ; bra 9b
cmf_z: mov (sp)+,d0 ; bra 9b
!-------------------------------------------------------------------------
cai_z: move.l (sp)+,d0 ; bra 1f
cal_q: move.l (sp)+,d0 ; bra 1f
-cal_l: adroff ; move.w (a1),d0 ; bra 1f
+cal_l: adroff ; move.w (a5),d0 ; bra 1f
cal_s0: move.w d6,d0 ; move.b (a3)+,d0 ; bra 1f
cal_1: cal_2: cal_3: cal_4: cal_5: cal_6: cal_7: cal_8:
cal_9: cal_10: cal_11: cal_12: cal_13: cal_14: cal_15: cal_16:
2: mov und,-(sp) ; dbra d1,2b
3: move.l (a0),a3 ; jmp (a4)
-ret_l: adroff ; move.w (a1),d0
+ret_l: adroff ; move.w (a5),d0
bra 1f
ret_s0: move.l #0,d0 ; move.b (a3)+,d0
1: blt e_oddz ; beq ret_0
bra 5f
ret_1W: move.l #0,d0
5: move.w d0,retsize !RETSIZE CONTAINS
-3: mov (sp)+,(a1)+ ; dbra d0,3b ! #WORDS-1
- lea retarea,a1 ; bra 4f
+3: mov (sp)+,(a5)+ ; dbra d0,3b ! #WORDS-1
+ lea retarea,a5 ; bra 4f
ret_0: move.w #-1,retsize
4: unlk a2 ; cmp.l a2,d6
beq hlt_z ; move.l (sp)+,a3
lfr_1W: move.w d6,d0 ; move.l wrd,d1
0: cmp.w retsize,d0 ; beq 1f
bsr e_badlfr
-1: add.l d1,a1
-2: mov -(a1),-(sp) ; dbra d0,2b
+1: add.l d1,a5
+2: mov -(a5),-(sp) ; dbra d0,2b
5: jmp (a4)
lfr_l: move.b (a3)+,-(sp) ; move.b (a3)+,1(sp)
move.w (sp)+,d0 ; bra 3f
!-----------------------------------------------------------------------------
bls_z: mov (sp)+,d0 ; bra 0f
-bls_l: adroff ; move.w (a1),d0
+bls_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0 ; bra 0f
4: move.l (sp)+,d0 ; bra 0f
blm_q: move.l (sp)+,d0 ; bra 0f
-blm_l: adroff ; move.w (a1),d0
+blm_l: adroff ; move.w (a5),d0
bra 0f
blm_s0: move.l d6,d0 ; move.b (a3)+,d0
0: move.l d0,d2 ; asr.w wmu,d2
- beq 5f ; move.l a1,d1
+ beq 5f ; move.l a5,d1
sub.w #1,d2 ; move.l (sp)+,a0 !dest. address
- move.l (sp)+,a1 ; cmp.l a0,a1
-!a1 contains source address. beware of overlap of pieces
+ move.l (sp)+,a5 ; cmp.l a0,a5
+!a5 contains source address. beware of overlap of pieces
beq 3f ; bcs 2f
-1: mov (a1)+,(a0)+ ; dbra d2,1b
-3: move.l d1,a1
+1: mov (a5)+,(a0)+ ; dbra d2,1b
+3: move.l d1,a5
5: jmp (a4)
-2: add.l d0,a1 ; add.l d0,a0
-4: mov -(a1),-(a0) ; dbra d2,4b
+2: add.l d0,a5 ; add.l d0,a0
+4: mov -(a5),-(a0) ; dbra d2,4b
bra 3b
!----------------------------------------------------------------------------
csa_z: mov (sp)+,d0 ; bra 0f
-csa_l: adroff ; move.w (a1),d0
+csa_l: adroff ; move.w (a5),d0
0: sub.l wrd,d0 ; bne e_illins
csa_1W: move.l (sp)+,a0 ; mov (sp)+,d0
add.l #4,a0 ; subt (a0),d0
comp word(a0),d0 ; bhi 6f
extend d0
asl.l #2,d0 ; add.l wrd,d0
- move.l a0,a5 ; add.l d0,a5
- move.l word(a5),d1 ; bne 5f
+ move.l a0,a1 ; add.l d0,a1
+ move.l word(a1),d1 ; bne 5f
6: sub.l #4,a0 ; move.l (a0),d1
beq e_case
5: move.l d1,a3 ; jmp (a4)
csb_z: mov (sp)+,d0 ; bra 0f
-csb_l: adroff ; move.w (a1),d0
+csb_l: adroff ; move.w (a5),d0
0: comp wrd,d0 ; bne e_illins
csb_1W: move.l (sp)+,a0 ; mov (sp)+,d0
mov 4(a0),d1 ; sub.l #1,d1
!----------------------------------------------------------------------------
dup_1W: mov (sp),-(sp) ; jmp (a4)
-dup_l: adroff ; move.w (a1),d0
+dup_l: adroff ; move.w (a5),d0
bra 1f
dus_z: mov (sp)+,d0 ; bra 0f
-dus_l: adroff ; move.w (a1),d0
+dus_l: adroff ; move.w (a5),d0
0: checksize
2: move.w (sp)+,d0 ; bra 1f
4: move.l (sp)+,d0
!-----------------------------------------------------------------------------
exg_z: mov (sp)+,d0 ; bra 0f
-exg_l: adroff ; move.w (a1),d0
+exg_l: adroff ; move.w (a5),d0
bra 0f
exg_s0: move.l d6,d0 ; move.b (a3)+,d0
0: move.l d7,d1 ; move.l d0,a0
!----------------------------------------------------------------------------
rck_z: mov (sp)+,d0 ; bra 0f
-rck_l: adroff ; move.w (a1),d0
+rck_l: adroff ; move.w (a5),d0
0: sub.l wrd,d0 ; beq rck_1W
sub.l wrd,d0 ; bne e_oddz
move.l (sp)+,a0
!------------------------------------------------------------------------------
fil_q: move.l (sp)+,a0 ; bra 3f
-fil_l: adroff ; move.w (a1),d0
+fil_l: adroff ; move.w (a5),d0
move.l d0,a0
3: add.l a6,a0 ; cmp.l 4(a6),a0
beq 0f
#if flow+count+prof
- move.l curproc,a5
- move.l 8(a5),d0
- sub.l 12(a5),d0
+ move.l curproc,a1
+ move.l 8(a1),d0
+ sub.l 12(a1),d0
move.l d0,countfld !START COUNTPTR FOR THIS PROC
- move.l a0,20(a5) !FILE POINTER IN PROC DES
+ move.l a0,20(a1) !FILE POINTER IN PROC DES
#endif
move.l a0,4(a6)
0: jmp (a4)
#endif
#endif
bra 8f
-lin_l: adroff ; move.w (a1),d0 ; bra 1f
+lin_l: adroff ; move.w (a5),d0 ; bra 1f
lin_q: move.l (sp)+,d0 ; bra 1f
lin_s0: move.l #0,d0 ; move.b (a3)+,d0
1: cmp.l (a6),d0 ; beq 9f
#endif
8:
#if last
- bsr nexttab ; move.l 4(a6),(a5)+ !store new line
- move.l (a6),(a5) !number in buffer lasttable
+ bsr nexttab ;
+ move.l 4(a6),(a1)+ !store new line
+ move.l (a6),(a1) !number in buffer lasttable
#endif
#if count
move.l countptr,d1 !LINE NUMBER IN d1
.data4 e_badmon, _Xdup, _Xpipe, _Xtimes
.data4 _Xprofil, e_badmon, _Xsetgid, _Xgetgid
.data4 _sigtrp, e_badmon, e_badmon, _Xacct
-.data4 e_badmon, _Xlock, _Xioctl, e_badmon
+.data4 e_badmon, e_badmon, _Xioctl, e_badmon
.data4 e_badmon, e_badmon, e_badmon, _Xexece
.data4 _Xumask, _Xchroot, e_badmon, e_badmon
error: movem.l d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6,-(sp)
mov 60(sp),d0 !ERROR NUMBER IN d0
- lea retsize,a5
+ lea retsize,a1
move.l #16,d1
-1: move.w -(a5),-(sp)
+1: move.w -(a1),-(sp)
dbra d1,1b
cmp.w #0xB,d0
bge 0f !FATAL ERROR , START ERROR HANDLING
and.w d2,d1
bne 0f
move.l #16,d1
- lea retsize,a5
-1: move.w (sp)+,(a5)+
+ lea retsize,a1
+1: move.w (sp)+,(a1)+
dbra d1,1b
movem.l (sp)+,d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6
add.l #0x10,sp !REMOVE RETURN STATUS BLOCK
add.l wrd,sp !REMOVE ERROR NUMBER
move.l #16,d0
- lea retsize,a5
-1: move.w (sp)+,(a5)+
+ lea retsize,a1
+1: move.w (sp)+,(a1)+
dbra d0,1b
movem.l (sp)+,d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6
add.l wrd,sp
2: move.l 4(a6),a0
cmp.l #0,a0
beq 5f
- move.l a0,a5
+ move.l a0,a1
sub.l #4,sp
- move.l a5,-(sp)
+ move.l a1,-(sp)
move.l #-1,d0
1: add.l #1,d0
- tst.b (a5)+
+ tst.b (a1)+
bne 1b
move.l d0,4(sp)
mov #2,-(sp)
beq 0f
bsr nexttab
bra 1f
-0: lea lasttable,a5
-1: tst.l (a5)
+0: lea lasttable,a1
+1: tst.l (a1)
bne 2f !exists entry in table
move.l #22,-(sp) !here case no lines processed
pea mess1
mov d6,-(sp)
bsr _Xwrite
add.l wrd+4,sp
- move.l (a5),d7
+ move.l (a1),d7
move.l d7,a0 !keep file pointer in d7
- clr.l (a5)+ !this will stop the printing
+ clr.l (a1)+ !this will stop the printing
move.l #-1,d1 !d1 will contain length of file name
3: add.l #1,d1
tst.b (a0)+
mov d6,-(sp)
bsr _Xwrite
add.l wrd+4,sp
-4: move.l (a5),d1 !next print line numbers
+4: move.l (a1),d1 !next print line numbers
lea mess3,a0
bsr itoa
move.l #12,-(sp)
bsr _Xwrite
add.l wrd+4,sp
bsr nexttab
- tst.l (a5) !in case 0 no more lines
+ tst.l (a1) !in case 0 no more lines
beq 9f
- cmp.l (a5),d7
+ cmp.l (a1),d7
bne 2b !new file name
- clr.l (a5)+ !skip file name
+ clr.l (a1)+ !skip file name
bra 4b !only new line
9:
.sect .data
!------------------------------------------------------------------------------
.sect .text
#if last
-nexttab: move.l linused,a5
- add.l #8,a5
- cmp.l #linused,a5 !top of buffer reached?
+nexttab: move.l linused,a1
+ add.l #8,a1
+ cmp.l #linused,a1 !top of buffer reached?
bne 1f !if so back to bottom
- sub.l #512,a5
-1: move.l a5,linused
+ sub.l #512,a1
+1: move.l a1,linused
rts
#endif
#if count+prof
.sect .text
tabprint: mov d0,-(sp) !KEEP FILE DESCRIPTOR FOR WRITING
lea buffer,a3
- move.l firstp,a5 !IN a5 POINTER TO CURRENT PROC.
+ move.l firstp,a1 !IN a1 POINTER TO CURRENT PROC.
move.l #0,a2 !IN a2 POINTER TO FILENAME .
-2: move.l 16(a5),d0
+2: move.l 16(a1),d0
beq 9f !LAST PROCEDURE , EXCEPTION .
move.l d0,a6 !IN a6 POINTER TO NEXT PROCEDURE .
7: move.l 8(a6),d7 !COUNTPTR OF NEXT IN d7
beq 9f
move.l d0,a6
bra 7b
-8: move.l 8(a5),d6 !COUNTPTR OF CURRENT IN d6.
- move.l 12(a5),d5 !FIRST LINE NUMBER IN d5.
+8: move.l 8(a1),d6 !COUNTPTR OF CURRENT IN d6.
+ move.l 12(a1),d5 !FIRST LINE NUMBER IN d5.
beq 1f !NO LINES : GO ON.
- cmp.l 20(a5),a2 !START PRINTING FILE NAME .
+ cmp.l 20(a1),a2 !START PRINTING FILE NAME .
beq 6f !NO NEW NAME.
- move.l 20(a5),a2 !NEW FILE NAME.
+ move.l 20(a1),a2 !NEW FILE NAME.
cmp.l #0,a2 !NO FILE NAME .
beq 6f
move.l #0,d1 !START SCANNING FILE NAME
add.l #4,d6 !NEXT COUNT.
sub.l #1,d7 !ONE LINE LESS TO GO.
bhi 0b
-1: move.l a6,a5
- cmp.l #0,a5
+1: move.l a6,a1
+ cmp.l #0,a1
bne 2b
add.l wrd,sp !REMOVE FILE DESCR.
rts !READY.
move.l d4,a0
add.l a0,a0
add.l a0,a0
- lea sig_trp-4(a0),a5
- move.l (a5),d2 !previous trap number in d2
+ lea sig_trp-4(a0),a1
+ move.l (a1),d2 !previous trap number in d2
comp #256,d1 !-2 and -1 special
bcc 1f
move.l sig_adr-4(a0),d3 !Get the pointer to the trap-
bmi sig_bad
move.l d1,d3
ad #2,d3 !0:reset default for signal, -1: ignore
-2: move.l d1,(a5) !set new trapno
+2: move.l d1,(a1) !set new trapno
move.l d3,-(sp) !set arguments to signal:
mov d4,-(sp) !pointer ,signo to be trapped
bsr _Xsignal
bsr _Xsignal
bsr e_badmon
rtr
-sig11: move.l 4(a1),d0
+sig11: move.l 4(a5),d0
sub.l sp,d0
bcs e_memflt !in this case error handling possible
move.l ml,sp !refresh stack and stop .
.sect .text
.sect .rom
.sect .data
+.retaddr:
+ .data4 0
.sect .bss
.sect .text
!THIS FILE CONTAINS THE SYSTEM CALLS FOR PMDS-II AS SUBROUTINES FOR THE
-!EM-INTERPRETER. a1 CONTAINS A POINTER TO THE RETURN AREA . EACH SUBROUTINE
+!EM-INTERPRETER. a5 CONTAINS A POINTER TO THE RETURN AREA . EACH SUBROUTINE
!EXPECTS ITS DATA IN THE FORM EM PRODUCES AND GIVES ITS RESULTS AS EM
!REQUIRES.
!THE PMDS-II REQUIRES THE ARGUMENTS ON THE STACK AS 4 BYTE INTEGERS OR
!POINTERS , AND USES THE C-CALLING CONVENTION. THE 2 BYTE WORDS 4 BYTE
!POINTERS VERSION HAS TO DO SOME CONVERSION FIRST .
-_Xexit: move.l (sp),(a1)
+_Xexit: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 1
+ jsr __exit
-_Xfork: move.l (sp),(a1)
- trap #0
- .data2 2
- lea 4(sp),sp
- bcs 2f
- tst.l d0 !PID OF CHILD IN PARENT, 0 IN CHILD
+_Xfork: move.l (sp)+,.retaddr
+ jsr _fork
+ tst.l d0
+ blt 2f
bne 1f
- trap #0
- .data2 20
+ jsr _getpid
mov d1,-(sp) !PID OF PARENT IN d1
mov #1,-(sp) !(PID OF CHILD IN D0),FLAG 1 IN CHILD
bra 0f
cl -(sp) !FLAG 0 IN PARENT
0: cl -(sp)
bra 3f
-2: mov d0,-(sp)
+2: move.l _errno,d0
+ mov d0,-(sp)
mov d0,-(sp)
-3: move.l (a1),a0
+3: move.l .retaddr,a0
jmp (a0)
!_Xfork is special
-_Xread: move.l (sp),(a1)
+_Xread: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 3
-sys0: lea 16(sp),sp
- bcc 1f
+ jsr _read
+sys0: lea 12(sp),sp
+ cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: move.l d0,-(sp)
cl -(sp)
-2: move.l (a1),a0
+2: move.l .retaddr,a0
jmp (a0)
-_Xwrite: move.l (sp),(a1)
+_Xwrite: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 4
+ jsr _write
bra sys0
-_Xopen: move.l (sp),(a1)
+_Xopen: move.l (sp)+,.retaddr
#ifndef lword
bsr st243
#endif
- trap #0
- .data2 5
-sys1: lea 12(sp),sp
-sys5: bcc 1f
+ jsr _open
+sys1: lea 8(sp),sp
+sys5: cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: mov d0,-(sp)
cl -(sp)
-2: move.l (a1),a0
+2: move.l .retaddr,a0
jmp (a0)
-_Xclose: move.l (sp),(a1)
+_Xclose: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 6
-sys3: lea 8(sp),sp
-sys4: bcc 1f
+ jsr _close
+sys3: lea 4(sp),sp
+sys4: cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: cl -(sp)
-2: move.l (a1),a0
+2: move.l .retaddr,a0
jmp (a0)
-_Xwait: move.l (sp),(a1)
- trap #0
- .data2 7
-sys6: lea 4(sp),sp
- bcc 1f
+_Xwait: move.l (sp)+,.retaddr
+.sect .data
+xxxx:
+ .data4 0, 0
+.sect .text
+ move.l #xxxx,-(sp)
+ jsr _wait
+ add.l #4,sp
+sys6: cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
-1: mov d1,-(sp) ! ??
- mov d0,-(sp)
+1: mov xxxx+4,-(sp) ! ??
+ mov xxxx,-(sp)
cl -(sp)
-2: move.l (a1),a0
+2: move.l .retaddr,a0
jmp (a0)
-_Xcreat: move.l (sp),(a1)
+_Xcreat: move.l (sp)+,.retaddr
#ifndef lword
bsr st243
#endif
- trap #0
- .data2 8
+ jsr _creat
bra sys1
-_Xlink: move.l (sp),(a1)
- trap #0
- .data2 9
- lea 12(sp),sp
+_Xlink: move.l (sp)+,.retaddr
+ jsr _link
+ lea 8(sp),sp
bra sys4
-_Xunlink: move.l (sp),(a1)
- trap #0
- .data2 10
+_Xunlink: move.l (sp)+,.retaddr
+ jsr _unlink
bra sys3
-_Xchdir: move.l (sp),(a1)
- trap #0
- .data2 12
+_Xchdir: move.l (sp)+,.retaddr
+ jsr _chdir
bra sys3
-_Xmknod: move.l (sp),(a1)
+_Xmknod: move.l (sp)+,.retaddr
#ifndef lword
bsr st244
#endif
- trap #0
- .data2 14
- lea 16(sp),sp
+ jsr _mknod
+ lea 12(sp),sp
bra sys4
-_Xchmod: move.l (sp),(a1)
+_Xchmod: move.l (sp)+,.retaddr
#ifndef lword
bsr st243
#endif
- trap #0
- .data2 15
- lea 12(sp),sp
+ jsr _chmod
+ lea 8(sp),sp
bra sys4
-_Xchown: move.l (sp),(a1)
+_Xchown: move.l (sp)+,.retaddr
#ifndef lword
bsr st244
#endif
- trap #0
- .data2 16
- lea 16(sp),sp
+ jsr _chown
+ lea 12(sp),sp
bra sys4
-_Xbreak: move.l (sp),(a1)
- trap #0
- .data2 17
- lea 8(sp),sp
- bcc 1f
+_Xbreak: move.l (sp)+,.retaddr
+ jsr _brk
+ lea 4(sp),sp
+ cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: move.l -4(sp),nd
cl -(sp)
-2: move.l (a1),a0
+2: move.l .retaddr,a0
jmp (a0)
.sect .data
nd: .data4 endbss
.sect .text
-_Xstat: move.l (sp),(a1)
- trap #0
- .data2 18
- lea 12(sp),sp
+_Xstat: move.l (sp)+,.retaddr
+ jsr _stat
+ lea 8(sp),sp
bra sys4
-_Xlseek: move.l (sp),(a1)
+_Xlseek: move.l (sp)+,.retaddr
#ifndef lword
bsr st245
#endif
- trap #0
- .data2 19
- lea 16(sp),sp
- bcc 1f
+ jsr _lseek
+ lea 12(sp),sp
+ cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
1: move.l d0,-(sp)
cl -(sp)
-2: move.l (a1),a0
+2: move.l .retaddr,a0
jmp (a0)
-
-_Xgetpid: move.l (sp),(a1)
- trap #0
- .data2 20
- add.l #4,sp
+_Xgetpid: move.l (sp)+,.retaddr
+ jsr _getpid
mov d0,-(sp)
- move.l (a1),a0
+ move.l .retaddr,a0
jmp (a0)
-_Xmount: move.l (sp),(a1)
+_Xmount: move.l (sp)+,.retaddr
#ifndef lword
bsr st246
#endif
- trap #0
- .data2 21
- lea 16(sp),sp
+ jsr _mount
+ lea 12(sp),sp
bra sys4
-_Xumount: move.l (sp),(a1)
- trap #0
- .data2 22
+_Xumount: move.l (sp)+,.retaddr
+ jsr _umount
bra sys3
-_Xsetuid: move.l (sp),(a1)
+_Xsetuid: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 23
+ jsr _setuid
bra sys3
-_Xgetuid: move.l (sp),(a1)
- trap #0
- .data2 24
-sys7: add.l #4,sp
- mov d1,-(sp)
+_Xgetuid: move.l (sp)+,.retaddr
+ jsr _getuid
+sys7: mov d1,-(sp)
mov d0,-(sp)
- move.l (a1),a0
+ move.l .retaddr,a0
jmp (a0)
-_Xstime: move.l (sp),(a1)
- trap #0
- .data2 25
+_Xstime: move.l (sp)+,.retaddr
+ jsr _stime
bra sys3
-_Xptrace: move.l (sp),(a1)
+_Xptrace: move.l (sp)+,.retaddr
#ifndef lword
bsr st247
#endif
- trap #0
- .data2 26
- lea 20(sp),sp
+ jsr _ptrace
+ lea 16(sp),sp
bra sys5
-_Xalarm: move.l (sp),(a1)
+_Xalarm: move.l (sp)+,.retaddr
#ifndef lword
sub.l #2,sp
- clr.w 4(sp)
+ clr.w (sp)
#endif
- trap #0
- .data2 27
- lea 8(sp),sp
+ jsr _alarm
+ lea 4(sp),sp
mov d0,-(sp)
- move.l (a1),a0
+ move.l .retaddr,a0
jmp (a0)
-_Xfstat: move.l (sp),(a1)
+_Xfstat: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 28
- lea 12(sp),sp
+ jsr _fstat
+ lea 8(sp),sp
bra sys4
-_Xpause: trap #0
- .data2 29
+_Xpause: jsr _pause
rts
-_Xutime: move.l (sp),(a1)
- trap #0
- .data2 30
- lea 12(sp),sp
+_Xutime: move.l (sp)+,.retaddr
+ jsr _utime
+ lea 8(sp),sp
bra sys4
-_Xaccess: move.l (sp),(a1)
+_Xaccess: move.l (sp)+,.retaddr
#ifndef lword
bsr st248
#endif
- trap #0
- .data2 33
- lea 12(sp),sp
+ jsr _access
+ lea 8(sp),sp
bra sys4
-_Xnice:
+_Xnice: move.l (sp)+,.retaddr
#ifndef lword
bsr 241
#endif
- trap #0
- .data2 34
- move.l (sp)+,(sp)
+ jsr _nice
+ move.l .retaddr,(sp)
rts
-_Xftime: move.l (sp),(a1)
- trap #0
- .data2 35
+_Xftime: move.l (sp)+,.retaddr
+ jsr _ftime
bra sys3
-_Xsync: trap #0
- .data2 36
+_Xsync: jsr _sync
rts
-_Xkill: move.l (sp),(a1)
+_Xkill: move.l (sp)+,.retaddr
#ifndef lword
bsr st248
#endif
- trap #0
- .data2 37
- lea 12(sp),sp
+ jsr _kill
+ lea 4(sp),sp
bra sys4
-_Xdup: move.l (sp),(a1)
+_Xdup: move.l (sp)+,.retaddr
#ifndef lword
bsr st248
#endif
- trap #0
- .data2 38
+ jsr _dup
bra sys1
-_Xpipe: move.l (sp),(a1)
- trap #0
- .data2 42
+_Xpipe: move.l (sp)+,.retaddr
+ move.l #xxxx,-(sp)
+ jsr _pipe
+ add.l #4,sp
bra sys6
-_Xtimes: trap #0
- .data2 43
- move.l (sp),a0
- add.l #8,sp
+_Xtimes: move.l (sp)+,.retaddr
+ jsr _times
+ move.l .retaddr,a0
+ add.l #4,sp
jmp (a0)
-_Xprofil: trap #0
- .data2 44
- move.l (sp),a0
- lea 20(sp),sp
+_Xprofil: move.l (sp)+,.retaddr
+ jsr _profil
+ move.l .retaddr,a0
+ lea 16(sp),sp
jmp (a0)
-_Xsetgid: move.l (sp),(a1)
+_Xsetgid: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 46
+ jsr _setgid
bra sys3
-_Xgetgid: move.l (sp),(a1)
- trap #0
- .data2 47
+_Xgetgid: move.l (sp)+,.retaddr
+ jsr _getpid
bra sys7
-
-_Xsignal: move.l (sp)+,retaddr
+_Xsignal: move.l (sp)+,.retaddr
mov (sp)+,d4
extend d4
move.l d4,-(sp)
- move.l retaddr,-(sp)
- trap #0
- .data2 48
+ move.l .retaddr,-(sp)
+ jsr _signal
lea 12(sp),sp !remove arguments
- bcc 1f
+ cmp.l #-1,d0
+ bne 1f
+ move.l _errno,d0
mov d0,-(sp)
mov d0,-(sp)
bra 2f
-1: mov d0,-(sp)
+1:
+ mov d0,-(sp)
cl -(sp)
-2: move.l retaddr,a0
+2:
+ move.l .retaddr,a0
jmp (a0)
- .sect .data
-retaddr: .data4 0
- .sect .text
-_Xacct: move.l (sp),(a1)
- trap #0
- .data2 51
- bra sys3
-_Xlock: move.l (sp),(a1)
-#ifndef lword
- bsr st241
-#endif
- trap #0
- .data2 53
+_Xacct: move.l (sp)+,.retaddr
+ jsr _acct
bra sys3
+!_Xlock: move.l (sp)+,.retaddr
+!#ifndef lword
+! bsr st241
+!#endif
+! jsr _lock
+! bra sys3
-_Xioctl: move.l (sp),(a1)
+_Xioctl: move.l (sp)+,.retaddr
#ifndef lword
bsr st248
#endif
- trap #0
- .data2 54
- lea 16(sp),sp
+ jsr _ioctl
+ lea 12(sp),sp
bra sys4
-!_Xmpxcall: move.l (sp),(a1)
+!_Xmpxcall: move.l (sp)+,.retaddr
!#ifndef lword
! bsr st241
!#endif
! lea 12(sp),sp
! bra sys4
-_Xexece: move.l (sp),(a1)
- trap #0
- .data2 59
- lea 16(sp),sp
+_Xexece: move.l (sp)+,.retaddr
+ jsr _execve
+ lea 12(sp),sp
bra sys4
-_Xumask: move.l (sp),(a1)
+_Xumask: move.l (sp)+,.retaddr
#ifndef lword
bsr st241
#endif
- trap #0
- .data2 60
- add.l #8,sp
+ jsr _umask
+ add.l #4,sp
mov d0,-(sp)
- move.l (a1),a0
+ move.l .retaddr,a0
jmp (a0)
-_Xchroot: move.l (sp),(a1)
- trap #0
- .data2 61
+_Xchroot: move.l (sp)+,.retaddr
+ jsr _chroot
bra sys3
st241: sub.l #2,sp
move.l 2(sp),(sp)
- move.l 6(sp),4(sp)
- move.w 10(sp),d0
+ move.w 6(sp),d0
ext.l d0
- move.l d0,8(sp)
+ move.l d0,4(sp)
rts
st243: sub.l #2,sp
move.l 2(sp),(sp)
move.l 6(sp),4(sp)
- move.l 10(sp),8(sp)
- move.w 14(sp),d0
+ move.w 10(sp),d0
ext.l d0
- move.l d0,12(sp)
+ move.l d0,8(sp)
rts
st244: move.l (sp),-(sp)
move.l 8(sp),4(sp)
- move.l 12(sp),8(sp)
+ move.w 12(sp),d0
+ ext.l d0
+ move.l d0,8(sp)
move.w 16(sp),d0
ext.l d0
move.l d0,12(sp)
- move.w 18(sp),d0
- ext.l d0
- move.l d0,16(sp)
rts
st245: move.l (sp),-(sp)
- move.l 8(sp),4(sp)
- move.w 12(sp),d0
+ move.w 8(sp),d0
ext.l d0
- move.l d0,8(sp)
- move.l 14(sp),12(sp)
- move.w 18(sp),d0
+ move.l d0,4(sp)
+ move.l 10(sp),8(sp)
+ move.w 14(sp),d0
ext.l d0
- move.l d0,16(sp)
+ move.l d0,12(sp)
rts
st246: sub.l #2,sp
move.l 2(sp),(sp)
move.l 6(sp),4(sp)
move.l 10(sp),8(sp)
- move.l 14(sp),12(sp)
- move.w 18(sp),d0
+ move.w 14(sp),d0
ext.l d0
- move.l d0,16(sp)
+ move.l d0,12(sp)
rts
st247: sub.l #6,sp
move.l 6(sp),(sp)
- move.l 10(sp),4(sp)
- move.w 14(sp),d0
+ move.w 10(sp),d0
ext.l d0
- move.l d0,8(sp)
- move.w 16(sp),d0
+ move.l d0,4(sp)
+ move.w 12(sp),d0
ext.l d0
- move.l d0,12(sp)
- move.l 18(sp),16(sp)
- move.w 22(sp),d0
+ move.l d0,8(sp)
+ move.l 14(sp),12(sp)
+ move.w 18(sp),d0
ext.l d0
- move.l d0,20(sp)
+ move.l d0,16(sp)
rts
st248: move.l (sp),-(sp)
- move.l 8(sp),4(sp)
+ move.w 8(sp),d0
+ ext.l d0
+ move.l d0,4(sp)
move.w 12(sp),d0
ext.l d0
move.l d0,8(sp)
- move.w 14(sp),d0
- ext.l d0
- move.l d0,12(sp)
rts
#endif