Ported to other m68000 systems

This commit is contained in:
ceriel 1987-03-31 09:23:20 +00:00
parent 526d769271
commit bc6486d7b0
15 changed files with 443 additions and 464 deletions

View file

@ -1,65 +1,69 @@
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
@ -74,7 +78,7 @@ cmp: all
-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

View file

@ -72,7 +72,7 @@
#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

View file

@ -1,4 +1,5 @@
.define filb
.define _m_a_i_n
.define curproc
.define pd
.define nproc
@ -20,16 +21,18 @@
! 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
@ -71,10 +74,10 @@ emfile: .asciz "e.out"
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
@ -101,19 +104,21 @@ emfile: .asciz "e.out"
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
@ -126,10 +131,10 @@ datswi: .data4 dat1; .data4 dat2; .data4 dat3; .data4 dat4
.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
@ -167,18 +172,21 @@ dofloat: add.l d2,a3
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
@ -190,7 +198,7 @@ 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
@ -237,39 +245,39 @@ finito: cmp.l hp,a3 ; bne badarg !load file error
! 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
@ -305,17 +313,17 @@ procinf: move.l #1,maxcount !count pointer for first procedure
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

View file

@ -12,14 +12,14 @@ loop: move.l #0,d0
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
@ -112,13 +112,13 @@ escape1:
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
@ -188,13 +188,13 @@ escape2:
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)

View file

@ -30,7 +30,7 @@ loc_s_1: mov #-1,d0
jmp (a4)
lpi_l:
adroff
move.w (a1),d0
move.w (a5),d0
move.l d0,-(sp)
jmp (a4)
lpi_q: jmp (a4)
@ -40,7 +40,7 @@ loc_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)
@ -49,7 +49,7 @@ ldc_0: cl -(sp)
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
@ -100,7 +100,7 @@ lol_w_1: move.l #-1,d0
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
@ -113,7 +113,7 @@ lol_pw: adroff
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
@ -150,7 +150,7 @@ ldl_w_1: move.l #-1,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
@ -163,7 +163,7 @@ ldl_pw: adroff
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
@ -173,7 +173,7 @@ ldl_qnw: 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
@ -194,7 +194,7 @@ loe_w0: loe_w1: loe_w2: loe_w3: loe_w4:
jmp (a4)
lde_lw: adroff
move.w (a1),d0
move.w (a5),d0
bra 1f
lde_qw: move.l (sp)+,d0
bra 1f
@ -235,7 +235,7 @@ lil_1W: move.l l1(a2),a0
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
@ -262,7 +262,7 @@ lil_w0: clr.w d0
jmp (a4)
lil_nw: adroff
move.w (a1),d0
move.w (a5),d0
ext.l d0
bra 1f
lil_qnw: move.l (sp)+,d0
@ -294,7 +294,7 @@ lof_s0: move.l d6,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
@ -315,7 +315,7 @@ lof_2W: move.l wrd+word,d0 ; bra 1b
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
@ -335,7 +335,7 @@ ldf_q: move.l (sp)+,d0
!-------------------------------------------------------------------------
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
@ -348,7 +348,7 @@ lal_w0: clr.w 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
@ -366,7 +366,7 @@ lal_w_2: move.l #-512,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)
@ -385,7 +385,7 @@ lae_w5: lae_w6:
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
@ -408,7 +408,7 @@ lxl_2: move.l #1,d0
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)
@ -429,7 +429,7 @@ lxa_l: adroff
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
@ -487,7 +487,7 @@ loi_1: move.l (sp)+,a0
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

View file

@ -8,7 +8,7 @@
!---------------------------------------------------------------------
stl_pw: adroff
move.w (a1),d0
move.w (a5),d0
3: asl.l wmu,d0
add.l a2,d0
move.l d0,a0
@ -23,7 +23,7 @@ stl_qpw: move.l (sp)+,d0
bra 3b
stl_nw: adroff
move.w (a1),d0
move.w (a5),d0
ext.l d0
bra 1f
stl_qnw: move.l (sp)+,d0
@ -61,7 +61,7 @@ sdl_w_1: move.l #-1,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
@ -69,7 +69,7 @@ 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
@ -87,7 +87,7 @@ sdl_pw: adroff
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
@ -101,7 +101,7 @@ sde_l: adroff
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
@ -124,7 +124,7 @@ stf_q: move.l (sp)+,a0
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
@ -147,7 +147,7 @@ sdf_q: move.l (sp)+,a0
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
@ -203,12 +203,12 @@ sil_w_1: move.l #-1,d0
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
@ -226,7 +226,7 @@ sti_1: move.l (sp)+,a0
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
@ -258,7 +258,7 @@ sti_1W: sti_2W: sti_3W: sti_4W:
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
@ -268,7 +268,7 @@ sts_z: mov (sp)+,d0
!------------------------------------------------------------------------------
! 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)
@ -279,7 +279,7 @@ adp_s0: move.l d6,d0 ; move.b (a3)+,d0
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
@ -289,7 +289,7 @@ ads_z: mov (sp)+,d0
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

View file

@ -31,14 +31,14 @@ inl__3W: move.l a2,a0 ; sub.l #6,a0 ; bra 4b
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
@ -66,16 +66,16 @@ dec_z: move.l sp,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
@ -97,15 +97,15 @@ zrl_w_1: move.l #-1,d0 ; move.b (a3)+,d0
#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
@ -117,7 +117,7 @@ zre_w0: clr.w d0 ; move.b (a3)+,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
@ -125,7 +125,7 @@ zrf_z: mov (sp)+,d0
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.
@ -136,7 +136,7 @@ zer_z: mov (sp),d0 ; bra 8b
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
@ -150,7 +150,7 @@ and_z: mov (sp)+,d0
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
@ -163,7 +163,7 @@ ior_z: mov (sp)+,d0
!----------------------------------------------------------------------------
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
@ -175,7 +175,7 @@ xor_z: mov (sp)+,d0
!----------------------------------------------------------------------------
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
@ -185,7 +185,7 @@ com_z: mov (sp)+,d0
!---------------------------------------------------------------------------
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
@ -199,7 +199,7 @@ rol_z: mov (sp)+,d0
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
@ -232,7 +232,7 @@ set_s0: clr.w d0 ; move.b (a3)+,d0
#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
!----------------------------------------------------------------------------
@ -262,7 +262,7 @@ inn_s0: clr.w d0 ; move.b (a3)+,d0
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

View file

@ -25,7 +25,7 @@ calcarr: move.l (sp)+,d3 !save return address
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
@ -43,7 +43,7 @@ lar_1W: bsr calcarr ; add.l d1,a0
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
@ -60,7 +60,7 @@ sar_1W: bsr calcarr ; asr.w #1,d1
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
!-------------------------------------------------------------------------

View file

@ -9,7 +9,7 @@
! 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
@ -40,7 +40,7 @@ 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
@ -71,7 +71,7 @@ sbi_2W:
!----------------------------------------------------------------------------
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
@ -150,7 +150,7 @@ mlu4: move.l d1,d3 ; move.l d0,d2
!---------------------------------------------------------------------------
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
@ -172,7 +172,7 @@ dvi_2W:
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
@ -255,7 +255,7 @@ dvu4:
!----------------------------------------------------------------------------
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
@ -281,7 +281,7 @@ ngi_l: adroff ; move.w (a1),d0
!--------------------------------------------------------------------------
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
@ -330,7 +330,7 @@ sli2:
#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

View file

@ -8,7 +8,7 @@
!-----------------------------------------------------------------------------
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)
@ -16,7 +16,7 @@ adu_l: adroff ; move.w (a1),d0
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)
@ -26,7 +26,7 @@ sbu_l: adroff ; move.w (a1),d0
!------------------------------------------------------------------------------
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)
@ -37,7 +37,7 @@ mlu_l: adroff ; move.w (a1),d0
!----------------------------------------------------------------------------
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
@ -51,7 +51,7 @@ dvu_l: adroff ; move.w (a1),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
@ -66,7 +66,7 @@ rmu_l: adroff ; move.w (a1),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
@ -85,7 +85,7 @@ slu_l: adroff ; move.w (a1),d0
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
@ -102,7 +102,7 @@ sru_l: adroff ; move.w (a1),d0
! 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

View file

@ -88,7 +88,7 @@ nobr3: add.l #2,a3 ; jmp (a4)
!-----------------------------------------------------------------------------
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
@ -104,7 +104,7 @@ cmi_2W:
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
@ -115,7 +115,7 @@ cmu_l: adroff ; move.w (a1),d0
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
@ -140,7 +140,7 @@ cmf_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
!-------------------------------------------------------------------------
@ -149,7 +149,7 @@ 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:
@ -184,7 +184,7 @@ lblcal:
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
@ -194,8 +194,8 @@ ret_s0: move.l #0,d0 ; move.b (a3)+,d0
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
@ -225,8 +225,8 @@ ret_0: move.w #-1,retsize
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

View file

@ -38,31 +38,31 @@ asp_qw: move.l (sp)+,d0 ; bra 6b
!-----------------------------------------------------------------------------
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
@ -70,14 +70,14 @@ csa_1W: move.l (sp)+,a0 ; mov (sp)+,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
@ -101,10 +101,10 @@ lpb_z: add.l #0+l0,(sp) ; jmp (a4)
!----------------------------------------------------------------------------
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
@ -117,7 +117,7 @@ dus_l: adroff ; move.w (a1),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
@ -185,7 +185,7 @@ str_s0: move.l d6,d0 ; move.b (a3)+,d0
!----------------------------------------------------------------------------
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
@ -229,16 +229,16 @@ itoa: move.l #9,d4 ; add.l #11,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)
@ -252,7 +252,7 @@ lni_z: add.l #1,(a6)
#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
@ -269,8 +269,9 @@ lin_s0: move.l #0,d0 ; move.b (a3)+,d0
#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
@ -311,7 +312,7 @@ syscal:
.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

View file

@ -39,9 +39,9 @@ fatal: clr.l -(sp) !dummy return address
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
@ -52,8 +52,8 @@ error: movem.l d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6,-(sp)
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
@ -73,8 +73,8 @@ rtt_z: move.l a2,sp
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
@ -126,12 +126,12 @@ notrap1: comp #29,d0 !ERROR NUMBER STILL IN d0
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)
@ -249,8 +249,8 @@ lhalt:
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
@ -263,9 +263,9 @@ lhalt:
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)+
@ -275,7 +275,7 @@ lhalt:
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)
@ -284,11 +284,11 @@ lhalt:
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
@ -345,12 +345,12 @@ emess:
!------------------------------------------------------------------------------
.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
@ -359,9 +359,9 @@ nexttab: move.l linused,a5
.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
@ -370,12 +370,12 @@ tabprint: mov d0,-(sp) !KEEP FILE DESCRIPTOR FOR WRITING
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
@ -407,8 +407,8 @@ tabprint: mov d0,-(sp) !KEEP FILE DESCRIPTOR FOR WRITING
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.

View file

@ -15,8 +15,8 @@ _sigtrp: move.l (sp)+,d2 !save return address
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-
@ -28,7 +28,7 @@ sig_bad: mov 22,-(sp) !_Xsignal. If pointer 0 trapping is
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
@ -85,7 +85,7 @@ sig12: pea sig12
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 .

View file

@ -1,32 +1,30 @@
.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
@ -34,373 +32,351 @@ _Xfork: move.l (sp),(a1)
cl -(sp) !FLAG 0 IN PARENT
0: cl -(sp)
bra 3f
2: mov d0,-(sp)
2: move.l _errno,d0
mov d0,-(sp)
3: move.l (a1),a0
mov d0,-(sp)
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
@ -409,26 +385,23 @@ _Xioctl: move.l (sp),(a1)
! 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
@ -438,6 +411,13 @@ _Xchroot: move.l (sp),(a1)
#ifndef lword
st241: sub.l #2,sp
move.l 2(sp),(sp)
move.w 6(sp),d0
ext.l d0
move.l d0,4(sp)
rts
st243: sub.l #2,sp
move.l 2(sp),(sp)
move.l 6(sp),4(sp)
move.w 10(sp),d0
@ -445,70 +425,56 @@ st241: sub.l #2,sp
move.l d0,8(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
ext.l d0
move.l d0,12(sp)
rts
st244: move.l (sp),-(sp)
move.l 8(sp),4(sp)
move.l 12(sp),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
ext.l d0
move.l d0,8(sp)
move.l 14(sp),12(sp)
move.w 18(sp),d0
move.w 16(sp),d0
ext.l d0
move.l d0,16(sp)
move.l d0,12(sp)
rts
st245: move.l (sp),-(sp)
move.w 8(sp),d0
ext.l d0
move.l d0,4(sp)
move.l 10(sp),8(sp)
move.w 14(sp),d0
ext.l d0
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.w 14(sp),d0
ext.l d0
move.l d0,12(sp)
rts
st247: sub.l #6,sp
move.l 6(sp),(sp)
move.w 10(sp),d0
ext.l d0
move.l d0,4(sp)
move.w 12(sp),d0
ext.l d0
move.l d0,8(sp)
move.l 14(sp),12(sp)
move.w 18(sp),d0
ext.l d0
move.l d0,16(sp)
rts
st247: sub.l #6,sp
move.l 6(sp),(sp)
move.l 10(sp),4(sp)
move.w 14(sp),d0
ext.l d0
move.l d0,8(sp)
move.w 16(sp),d0
ext.l d0
move.l d0,12(sp)
move.l 18(sp),16(sp)
move.w 22(sp),d0
ext.l d0
move.l d0,20(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