Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
112
Task/Ackermann-function/68000-Assembly/ackermann-function.68000
Normal file
112
Task/Ackermann-function/68000-Assembly/ackermann-function.68000
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
;
|
||||
; Ackermann function for Motorola 68000 under AmigaOs 2+ by Thorham
|
||||
;
|
||||
; Set stack space to 60000 for m = 3, n = 5.
|
||||
;
|
||||
; The program will print the ackermann values for the range m = 0..3, n = 0..5
|
||||
;
|
||||
_LVOOpenLibrary equ -552
|
||||
_LVOCloseLibrary equ -414
|
||||
_LVOVPrintf equ -954
|
||||
|
||||
m equ 3 ; Nr of iterations for the main loop.
|
||||
n equ 5 ; Do NOT set them higher, or it will take hours to complete on
|
||||
; 68k, not to mention that the stack usage will become astronomical.
|
||||
; Perhaps n can be a little higher... If you do increase the ranges
|
||||
; then don't forget to increase the stack size.
|
||||
|
||||
execBase=4
|
||||
|
||||
start
|
||||
move.l execBase,a6
|
||||
|
||||
lea dosName,a1
|
||||
moveq #36,d0
|
||||
jsr _LVOOpenLibrary(a6)
|
||||
move.l d0,dosBase
|
||||
beq exit
|
||||
|
||||
move.l dosBase,a6
|
||||
lea printfArgs,a2
|
||||
|
||||
clr.l d3 ; m
|
||||
.loopn
|
||||
clr.l d4 ; n
|
||||
.loopm
|
||||
bsr ackermann
|
||||
|
||||
move.l d3,0(a2)
|
||||
move.l d4,4(a2)
|
||||
move.l d5,8(a2)
|
||||
move.l #outString,d1
|
||||
move.l a2,d2
|
||||
jsr _LVOVPrintf(a6)
|
||||
|
||||
addq.l #1,d4
|
||||
cmp.l #n,d4
|
||||
ble .loopm
|
||||
|
||||
addq.l #1,d3
|
||||
cmp.l #m,d3
|
||||
ble .loopn
|
||||
|
||||
exit
|
||||
move.l execBase,a6
|
||||
move.l dosBase,a1
|
||||
jsr _LVOCloseLibrary(a6)
|
||||
rts
|
||||
;
|
||||
; ackermann function
|
||||
;
|
||||
; in:
|
||||
;
|
||||
; d3 = m
|
||||
; d4 = n
|
||||
;
|
||||
; out:
|
||||
;
|
||||
; d5 = ans
|
||||
;
|
||||
ackermann
|
||||
move.l d3,-(sp)
|
||||
move.l d4,-(sp)
|
||||
|
||||
tst.l d3
|
||||
bne .l1
|
||||
move.l d4,d5
|
||||
addq.l #1,d5
|
||||
bra .return
|
||||
.l1
|
||||
tst.l d4
|
||||
bne .l2
|
||||
subq.l #1,d3
|
||||
moveq #1,d4
|
||||
bsr ackermann
|
||||
bra .return
|
||||
.l2
|
||||
subq.l #1,d4
|
||||
bsr ackermann
|
||||
move.l d5,d4
|
||||
subq.l #1,d3
|
||||
bsr ackermann
|
||||
|
||||
.return
|
||||
move.l (sp)+,d4
|
||||
move.l (sp)+,d3
|
||||
rts
|
||||
;
|
||||
; variables
|
||||
;
|
||||
dosBase
|
||||
dc.l 0
|
||||
|
||||
printfArgs
|
||||
dcb.l 3
|
||||
;
|
||||
; strings
|
||||
;
|
||||
dosName
|
||||
dc.b "dos.library",0
|
||||
|
||||
outString
|
||||
dc.b "ackermann (%ld,%ld) is: %ld",10,0
|
||||
Loading…
Add table
Add a link
Reference in a new issue