dat nop cogid pa coginit pa,##$404 orgh $10 long 0 'reserved long 0 ' clock frequency: will default to 200000000 long 0 ' clock mode: will default to $10009fb orgh $400 _ret_ mov result1, #0 org 0 entry cmp ptra, #0 wz if_ne jmp #spininit mov ptra, ptr_stackspace_ rdlong pa, #20 wz if_ne jmp #skip_clock_set_ hubset #0 hubset ##16779768 waitx ##200000 mov pa, ##16779771 hubset pa wrlong pa, #24 wrlong ##200000000, #20 jmp #skip_clock_set_ orgf 128 skip_clock_set_ call #_main cogexit waitx ##160000 cogid arg01 cogstop arg01 spininit rdlong objptr, ptra add ptra, #4 rdlong result1, ptra add ptra, #4 rdlong arg01, ptra add ptra, #4 rdlong arg02, ptra add ptra, #4 rdlong arg03, ptra add ptra, #4 rdlong arg04, ptra sub ptra, #16 call result1 jmp #cogexit FCACHE_LOAD_ pop fcache_tmpb_ add fcache_tmpb_, pa push fcache_tmpb_ sub fcache_tmpb_, pa shr pa, #2 altd pa mov 0-0, ret_instr_ sub pa, #1 setq pa rdlong $0, fcache_tmpb_ jmp #\$0 ' jmp to cache ret_instr_ ret fcache_tmpb_ long 0 builtin_bytefill_ shr arg03, #1 wc if_c wrbyte arg02, arg01 if_c add arg01, #1 movbyts arg02, #0 builtin_wordfill_ shr arg03, #1 wc if_c wrword arg02, arg01 if_c add arg01, #2 setword arg02, arg02, #1 builtin_longfill_ wrfast #0,arg01 cmp arg03, #0 wz if_nz rep #1, arg03 if_nz wflong arg02 ret COUNT_ long 0 RETADDR_ long 0 fp long 0 pushregs_ pop pa pop RETADDR_ tjz COUNT_, #pushregs_done_ sub COUNT_, #1 setq COUNT_ wrlong local01, ptra add COUNT_, #1 pushregs_done_ shl COUNT_, #2 add ptra, COUNT_ shr COUNT_, #2 setq #2 ' push 3 registers starting at COUNT_ wrlong COUNT_, ptra add ptra, #12 mov fp, ptra jmp pa popregs_ pop pa sub ptra, #12 setq #2 rdlong COUNT_, ptra tjz COUNT_, #popregs__ret shl COUNT_, #2 sub ptra, COUNT_ shr COUNT_, #2 sub COUNT_, #1 setq COUNT_ rdlong local01, ptra popregs__ret push RETADDR_ jmp pa unsdivide_ setq #0 qdiv muldiva_, muldivb_ getqx muldivb_ _ret_ getqy muldiva_ divide_ abs muldiva_,muldiva_ wc 'abs(x) muxc itmp2_,#%11 'store sign of x abs muldivb_,muldivb_ wcz 'abs(y) if_c xor itmp2_,#%10 'store sign of y if_z ret call #unsdivide_ test itmp2_,#1 wc 'restore sign, remainder negc muldiva_,muldiva_ test itmp2_,#%10 wc 'restore sign, division result _ret_ negc muldivb_,muldivb_ itmp1_ long 0 itmp2_ long 0 objptr long @objmem ptr___system__dat__ long @__system__dat_ ptr_stackspace_ long @stackspace result1 long 0 COG_BSS_START fit 480 orgh hubentry _main dirh #56 dirh #57 LR__0001 outnot #56 outnot #57 mov arg01, ##1000 call #__system___waitms jmp #LR__0001 _main_ret ret hubexit jmp #cogexit __system___waitms mov COUNT_, #3 call #pushregs_ mov local01, arg01 rdlong local02, #20 loc pa, #(@LR__0003-@LR__0002) call #FCACHE_LOAD_ LR__0002 cmps local01, ##1000 wcz if_a waitx local02 if_a sub local01, ##1000 if_a jmp #LR__0002 LR__0003 add ptr___system__dat__, #12 rdlong local03, ptr___system__dat__ wz sub ptr___system__dat__, #12 if_ne jmp #LR__0004 mov muldiva_, local02 mov muldivb_, ##1000 call #unsdivide_ mov local03, muldivb_ add ptr___system__dat__, #12 wrlong muldivb_, ptr___system__dat__ sub ptr___system__dat__, #12 LR__0004 cmps local01, #0 wcz if_a qmul local01, local03 if_a getqx arg01 if_a waitx arg01 mov ptra, fp call #popregs_ __system___waitms_ret ret alignl __system__dat_ byte $00[8] byte $03, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 objmem long 0[0] stackspace long 0[1] org COG_BSS_START arg01 res 1 arg02 res 1 arg03 res 1 arg04 res 1 local01 res 1 local02 res 1 local03 res 1 muldiva_ res 1 muldivb_ res 1 fit 480