Adapted to use of new assembler & linker

This commit is contained in:
keie 1985-06-04 10:57:42 +00:00
parent fa2547ddf7
commit a9bbf81f93
36 changed files with 230 additions and 87 deletions

View file

@ -1,12 +1,16 @@
.define .sar .define .sar
.define .lar .define .lar
.define .aar .define .aar
.sect .text
.sect .rom
.sect .data
.sect .bss
!register usage: !register usage:
! a0 : descriptor address ! a0 : descriptor address
! d0 : index ! d0 : index
! a1 : base address ! a1 : base address
.text .sect .text
.aar: .aar:
move.l (sp)+,d2 ! return address move.l (sp)+,d2 ! return address
move.l (sp)+,a0 move.l (sp)+,a0

View file

@ -1,6 +1,10 @@
.define .cii .define .cii
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.cii: .cii:
move.l (sp)+,a0 ! return address move.l (sp)+,a0 ! return address
move (sp)+,d0 ! destination size move (sp)+,d0 ! destination size

View file

@ -1,8 +1,12 @@
.define .cmi, .cmi_ .define .cmi, .cmi_
.sect .text
.sect .rom
.sect .data
.sect .bss
! NUM == 4 ! NUM == 4
! result in d1 ! result in d1
.text .sect .text
.cmi: .cmi:
.cmi_: .cmi_:
move.l (sp)+,a0 move.l (sp)+,a0

View file

@ -1,6 +1,10 @@
.define .cmp .define .cmp
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.cmp: .cmp:
move.l (sp)+,a0 ! return address move.l (sp)+,a0 ! return address
move.l #1,d1 move.l #1,d1

View file

@ -1,8 +1,12 @@
.define .cms .define .cms
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 contains set size ! d0 contains set size
.text .sect .text
.cms: .cms:
move.l (sp)+,d2 ! return address move.l (sp)+,d2 ! return address
move.l sp,a0 move.l sp,a0

View file

@ -1,7 +1,11 @@
.define .cmu .define .cmu
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 : # bytes of 1 block ! d0 : # bytes of 1 block
.text .sect .text
.cmu: .cmu:
move.l (sp)+,d2 ! reta move.l (sp)+,d2 ! reta
move.l sp,a0 ! top block move.l sp,a0 ! top block

View file

@ -1,6 +1,10 @@
.define .csa .define .csa
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.csa: .csa:
move.l (sp)+,a0 ! case descriptor move.l (sp)+,a0 ! case descriptor
move (sp)+,d0 ! index move (sp)+,d0 ! index

View file

@ -1,6 +1,10 @@
.define .csb .define .csb
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.csb: .csb:
move.l (sp)+,a0 ! case descriptor move.l (sp)+,a0 ! case descriptor
move (sp)+,d0 ! index move (sp)+,d0 ! index

View file

@ -1,8 +1,12 @@
.define .ciu .define .ciu
.define .cui .define .cui
.define .cuu .define .cuu
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.ciu: .ciu:
.cui: .cui:
.cuu: .cuu:

View file

@ -1,6 +1,10 @@
.define .cfi,.cif,.cfu,.cuf,.cff .define .cfi,.cif,.cfu,.cuf,.cff
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
! this is a dummy float conversion routine ! this is a dummy float conversion routine
.cfi: .cfi:

View file

@ -1,12 +1,16 @@
.define .diagnos .define .diagnos
.sect .text
.sect .rom
.sect .data
.sect .bss
space = 040 space = 040
del = 0177 del = 0177
.text .sect .text
.diagnos: .diagnos:
move.w hol0,-(sp) move.w hol0,-(sp)
move.l hol0+FILN_AD,d2 move.l hol0+4,d2
beq 1f beq 1f
move.l d2,a0 move.l d2,a0
move.l #40,d0 move.l #40,d0
@ -31,7 +35,7 @@ del = 0177
move.l #unknwn,d2 move.l #unknwn,d2
bra 2b bra 2b
.data .sect .data
fmt: .asciz "%s, line %d: " fmt: .asciz "%s, line %d: "
unknwn: .asciz "unknown file" unknwn: .asciz "unknown file"
.align 2 .align 2

View file

@ -1,7 +1,11 @@
.define .dvi .define .dvi
.sect .text
.sect .rom
.sect .data
.sect .bss
! signed long divide ! signed long divide
.text .sect .text
.dvi: .dvi:
move.l (sp)+,a0 ! return address move.l (sp)+,a0 ! return address
move.l (sp)+,d0 move.l (sp)+,d0

View file

@ -1,4 +1,8 @@
.define .dvu .define .dvu
.sect .text
.sect .rom
.sect .data
.sect .bss
! unsigned long divide ! unsigned long divide
! register usage: ! register usage:
@ -6,7 +10,7 @@
! d1 dividend ! d1 dividend
! exit : d1 quotient ! exit : d1 quotient
! d2 remainder ! d2 remainder
.text .sect .text
.dvu: .dvu:
move.l (sp)+,a1 ! return address move.l (sp)+,a1 ! return address
move.l (sp)+,d0 move.l (sp)+,d0

View file

@ -1,14 +1,16 @@
.define endtext,enddata,endbss,_etext,_edata,_end .define endtext,enddata,endbss,_etext,_edata,_end
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .end ! only for declaration of _end and endbss.
.text .sect .text
.align 2
endtext: endtext:
_etext: _etext:
.data .sect .data
.align 2
enddata: enddata:
_edata: _edata:
.bss .sect .end
.align 2
endbss:
_end: _end:
endbss:

View file

@ -1,7 +1,11 @@
.define .exg .define .exg
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 : exchange size in bytes ! d0 : exchange size in bytes
.text .sect .text
.exg: .exg:
move.l (sp)+,d2 ! return address move.l (sp)+,d2 ! return address
move.l sp,a1 move.l sp,a1

View file

@ -1,6 +1,10 @@
.define .fat .define .fat
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.fat: .fat:
jsr .trp jsr .trp
jmp EXIT jmp EXIT

18
mach/m68k2/libem/ffp.s Normal file
View file

@ -0,0 +1,18 @@
.define .cmf8, .cif8, .dvf8, .adf8, .ngf8, .mlf8, .fif8, .fef8, .cff4
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
.cmf8:
.cif8:
.dvf8:
.adf8:
.ngf8:
.mlf8:
.fif8:
.fef8:
.cff4:
move.w #EILLINS,-(sp)
jmp .fat

View file

@ -1,4 +1,8 @@
.define .gto .define .gto
.sect .text
.sect .rom
.sect .data
.sect .bss
.extern .gto .extern .gto
.gto: .gto:
@ -69,7 +73,7 @@ etabd:
etaba: etaba:
move.l d2,a1 move.l d2,a1
jmp (a1) ! return jmp (a1) ! return
.data .sect .data
savd0: .long 0 savd0: .data4 0
savd1: .long 0 savd1: .data4 0
.text .sect .text

View file

@ -1,9 +1,13 @@
.define .inn .define .inn
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 : set size in bytes ! d0 : set size in bytes
! d1 : bitnumber ! d1 : bitnumber
.text .sect .text
.inn: .inn:
move.l (sp)+,d2 ! return address move.l (sp)+,d2 ! return address
move.w (sp)+,d1 move.w (sp)+,d1

View file

@ -1,8 +1,12 @@
.define .los .define .los
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 : # bytes ! d0 : # bytes
! a0 : source address ! a0 : source address
.text .sect .text
.los: .los:
move.l (sp)+,a1 move.l (sp)+,a1
move.w (sp)+,d0 move.w (sp)+,d0

View file

@ -1,4 +1,8 @@
.define .lpb .define .lpb
.sect .text
.sect .rom
.sect .data
.sect .bss
.extern .lpb .extern .lpb
.lpb: .lpb:
! convert local to argument base ! convert local to argument base

View file

@ -1,4 +1,8 @@
.define .lxa .define .lxa
.sect .text
.sect .rom
.sect .data
.sect .bss
.extern .lxa .extern .lxa
.lxa: .lxa:
! #levels (>= 0) on stack ! #levels (>= 0) on stack

View file

@ -1,4 +1,8 @@
.define .lxl .define .lxl
.sect .text
.sect .rom
.sect .data
.sect .bss
.extern .lxl .extern .lxl
.lxl: .lxl:
! #levels on stack (> 0) ! #levels on stack (> 0)

View file

@ -1,7 +1,11 @@
.define .mli .define .mli
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.mli: .mli:
move.l (sp)+,a0 move.l (sp)+,a0
move.l (sp)+,d1 move.l (sp)+,d1

View file

@ -1,11 +1,15 @@
.define .mlu .define .mlu
.sect .text
.sect .rom
.sect .data
.sect .bss
! entry : d0 multiplicand ! entry : d0 multiplicand
! d1 multiplier ! d1 multiplier
! exit : d0 high order result ! exit : d0 high order result
! d1 low order result ! d1 low order result
.text .sect .text
.mlu: .mlu:
move.l (sp)+,a1 move.l (sp)+,a1
move.l (sp)+,d1 move.l (sp)+,d1

View file

@ -1,5 +1,9 @@
.define .mon .define .mon
.text .sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
.mon: .mon:
move.l (sp)+,a0 move.l (sp)+,a0
pea fmt pea fmt
@ -7,6 +11,6 @@
add #6,sp add #6,sp
jmp EXIT jmp EXIT
.data .sect .data
fmt: .asciz "system call %d not implemented" fmt: .asciz "system call %d not implemented"
.align 2 .align 2

View file

@ -1,6 +1,10 @@
.define .nop .define .nop
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.nop: .nop:
move.w hol0,-(sp) move.w hol0,-(sp)
pea fmt pea fmt
@ -8,6 +12,6 @@
add #6,sp add #6,sp
rts rts
.data .sect .data
fmt: .asciz "test %d\n" fmt: .asciz "test %d\n"
.align 2 .align 2

View file

@ -1,6 +1,10 @@
.define _printn .define _printn
.define _printf .define _printf
.text .sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
_putchar: _putchar:
move.w #1,-(sp) move.w #1,-(sp)
pea 7(sp) pea 7(sp)
@ -10,14 +14,14 @@ _putchar:
rts rts
_printf: _printf:
link a6,#-12 link a6,#-12
.data .sect .data
_12: _12:
.short 28786 .data2 28786
.short 26990 .data2 26990
.short 29798 .data2 29798
.short 11875 .data2 11875
.short 0 .data2 0
.text .sect .text
pea 8+4(a6) pea 8+4(a6)
move.l (sp)+,-6(a6) move.l (sp)+,-6(a6)
I004: I004:
@ -138,15 +142,15 @@ I002:
rts rts
_printn: _printn:
link a6,#-2 link a6,#-2
.data .sect .data
_15: _15:
.short 12337 .data2 12337
.short 12851 .data2 12851
.short 13365 .data2 13365
.short 13879 .data2 13879
.short 14393 .data2 14393
.short 0 .data2 0
.text .sect .text
move.w 8+0(a6),-(sp) move.w 8+0(a6),-(sp)
move.w #10,-(sp) move.w #10,-(sp)
move.w (sp)+,d0 move.w (sp)+,d0

View file

@ -1,6 +1,10 @@
.define .rck .define .rck
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.rck: .rck:
move.l (sp)+,a1 move.l (sp)+,a1
move.l (sp)+,a0 ! descriptor address move.l (sp)+,a0 ! descriptor address

View file

@ -1,6 +1,10 @@
.define .ret .define .ret
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.ret: .ret:
beq 3f beq 3f
cmp #2,d0 cmp #2,d0

View file

@ -1,8 +1,12 @@
.define .set .define .set
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 : setsize in bytes ! d0 : setsize in bytes
! d1 : bitnumber ! d1 : bitnumber
.text .sect .text
.set: .set:
move.l (sp)+,a0 move.l (sp)+,a0
move.w (sp)+,d1 move.w (sp)+,d1

View file

@ -1,6 +1,10 @@
.define .strhp .define .strhp
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.strhp: .strhp:
move.l (sp)+,a0 move.l (sp)+,a0
move.l (sp)+,d0 ! heap pointer move.l (sp)+,d0 ! heap pointer

View file

@ -1,6 +1,10 @@
.define .sig .define .sig
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.sig: .sig:
move.l (sp)+,a0 move.l (sp)+,a0
move.l (sp)+,a1 ! trap pc move.l (sp)+,a1 ! trap pc

View file

@ -1,8 +1,12 @@
.define .sts .define .sts
.sect .text
.sect .rom
.sect .data
.sect .bss
! d0 : # bytes ! d0 : # bytes
! a0 : destination address ! a0 : destination address
.text .sect .text
.sts: .sts:
move.l (sp)+,a1 move.l (sp)+,a1
move.w (sp)+,d0 move.w (sp)+,d0

View file

@ -1,6 +1,10 @@
.define .trp .define .trp
.sect .text
.sect .rom
.sect .data
.sect .bss
.text .sect .text
.trp: .trp:
move.l (sp)+,a1 ! return address move.l (sp)+,a1 ! return address
move.w (sp)+,d0 ! error number move.w (sp)+,d0 ! error number
@ -30,7 +34,7 @@
jsr .diagnos jsr .diagnos
jmp EXIT jmp EXIT
.data .sect .data
.rettrp: .long 0 .rettrp: .data4 0
fmt: .asciz "trap %d called\n" fmt: .asciz "trap %d called\n"
.align 2 .align 2

View file

@ -1,23 +1,18 @@
.define CERASE,CKILL,CSTOP,CSTART
.define .lino,.filn .define .lino,.filn
.define EXIT
.define F_DUM,EXIT
.define begtext,begdata,begbss .define begtext,begdata,begbss
.define EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO .define EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
.define hol0,.reghp,.limhp,.trpim,.trppc .define hol0,.reghp,.limhp,.trpim,.trppc
.define LINO_AD,FILN_AD .sect .text
.sect .rom
.sect .data
.sect .bss
! EM runtime start-off for the Bleasdale 68000 system ! EM runtime start-off for the Bleasdale 68000 system
CERASE = 010
CKILL = 030
CSTART = 021
CSTOP = 023
F_DUM = 0
LINO_AD = 0 LINO_AD = 0
FILN_AD = 4 FILN_AD = 4
@ -30,8 +25,7 @@ EILLINS = 18
ECASE = 20 ECASE = 20
EBADGTO = 27 EBADGTO = 27
.base 0x20000 .sect .text
.text
begtext: begtext:
! Bleasdale puts the argument and environment vectors ! Bleasdale puts the argument and environment vectors
! themselves on top of the stack, instead of POINTERS ! themselves on top of the stack, instead of POINTERS
@ -57,30 +51,27 @@ begtext:
! envp pointer. ! envp pointer.
add.l #2,sp !convert argc from 4-byte to 2-byte add.l #2,sp !convert argc from 4-byte to 2-byte
pea endbss
jsr _brk
add.l #4,sp
jsr _m_a_i_n jsr _m_a_i_n
add #010,sp add #010,sp
EXIT: EXIT:
jsr __exit jsr __exit
.data .sect .data
begdata: begdata:
hol0: hol0:
.lino: .lino:
.short 0,0 ! lino .data2 0,0 ! lino
.filn: .filn:
.long 0 ! filn .data4 0 ! filn
.reghp: .reghp:
.long endbss .data4 endbss
.limhp: .limhp:
.long endbss .data4 endbss
.trppc: .trppc:
.long 0 .data4 0
.trpim: .trpim:
.short 0 .data2 0
.bss .sect .bss
begbss: begbss: !initialization is not needed because ALL entries are in zero space!