con sys_clk = 23_940_000 baudrate = 115200 clocksperbit = float(sys_clk) / float(baudrate) nco = round(clocksperbit * 65536.0) & $FFFFFC00 rx_pin = 63 tx_pin = 62 dat org hubset #0 wrpin #%1_11110_0,#tx_pin wxpin ##nco | 7,#tx_pin dirh #tx_pin loc ptra,#@code1 coginit #2,ptra loc ptra,#@code2 coginit #3,ptra waitx ##sys_clk*20 mov pb,#9 luttest cogatn #%1000 waitx ##sys_clk / 2 cogatn #%1100 djnz pb,#luttest jmp #$ '**************************************************** orgh $400 org code1 lutson .loop waitatn waitx #4 wrlut ##$55555555,#0 jmp #.loop '**************************************************** org code2 lutson mov ptra,#0 waitx ##sys_clk * 15 loc ptrb,#@msg call #print .loop waitatn mov pa,ptra add ptra,#1 push pa mov value,pa sub value,#4 call #offset callpa #" ",#send_char wrlut ##$aaaaaaaa,#0 rdlut value,#0 call #hex callpa #" ",#send_char pop pa waitatn waitx pa rdlut value,#0 call #hex callpa #13,#send_char jmp #.loop value long 0 ax long 0 cx long 0 char long 0 hex mov cx,#8 .loop getnib pa,value,#7 add pa,#"0" cmp pa,#":" wc if_nc add pa,#7 call #send_char rol value,#4 djnz cx,#.loop ret wcz offset testb value,#31 wc if_c callpa #"-",#send_char if_nc callpa #"+",#send_char abs value add value,#"0" mov pa,value call #send_char mov cx,#5 .loop callpa #" ",#send_char djnz cx,#.loop ret send_char rdpin ax,#tx_pin wc if_c jmp #send_char wypin pa,#tx_pin ret wcz print rdbyte pa,ptrb++ wz if_z ret call #send_char jmp #print orgh msg byte "Offset Original New",13,0 { 0,- Alias -,- Group -,- Encoding -,"#S = immediate (I=1). S = register.#D = immediate (L=1). D = register.- Assembly Syntax -","* Z = (result == 0).** If #S and cogex, PC += signed(S). If #S and hubex, PC += signed(S*4). If S, PC = register S.- Description -","8-Cog Timing* +1 if crosses hub long- Cogex Cycles -","8-Cog Timing* +1 if crosses hub long- Hubex Cycles -","16-Cog Timing* +1 if crosses hub long- Cogex Cycles -","16-Cog Timing* +1 if crosses hub long- Hubex Cycles -","* Data not forwarded.- Register Write -",- Hub R/W -,- Stack R/W - 151,.,Lookup Table,EEEE 1010101 CZI DDDDDDDDD SSSSSSSSS,"RDLUT D,{#}S {WC/WZ/WCZ}",Read LUT data from address S[8:0] into D. C = MSB of data. *,3,same,3,same,D,, 220,.,Lookup Table,EEEE 1100001 1LI DDDDDDDDD SSSSSSSSS,"WRLUT {#}D,{#}S",Write D to LUT address S[8:0].,2,same,2,same,,, } { Offset Original New -4 FFFFFFFF FFFFFFFF -3 FFFFFFFF FFFFFFFF -2 FFFFFFFF FFFFFFFF -1 FFFFFFFF FFFFFFFF +0 FFFFFFFF FFFFFFFF +1 FFFFFFFF FFFFFFFF +2 FFFFFFFF 09009DFF 'glitch +3 FFFFFFFF 00000000 +4 FFFFFFFF 00000000 Offset Original New -4 00000000 00000000 -3 00000000 00000000 -2 00000000 00000000 -1 00000000 00000000 +0 00000000 00000000 +1 00000000 00000000 +2 00000000 00000000 +3 00000000 FFFFFFFF +4 00000000 FFFFFFFF Offset Original New -4 55555555 55555555 -3 55555555 55555555 -2 55555555 55555555 -1 55555555 55555555 +0 55555555 55555555 +1 55555555 55555555 +2 55555555 01005555 'glitch +3 55555555 AAAAAAAA +4 55555555 AAAAAAAA Offset Original New -4 AAAAAAAA AAAAAAAA -3 AAAAAAAA AAAAAAAA -2 AAAAAAAA AAAAAAAA -1 AAAAAAAA AAAAAAAA +0 AAAAAAAA AAAAAAAA +1 AAAAAAAA AAAAAAAA +2 AAAAAAAA 88288AAA 'glitcg +3 AAAAAAAA 55555555 +4 AAAAAAAA 55555555 }