#garfield Logs
Apr 08 2022
#garfield Calendar
12:08 AM rue_mohr: ok, basic address tracking
12:19 AM rue_mohr: oh, actually, thats kinda cool
12:20 AM rue_mohr: because the opcodes, are split like they are, I can make the first pass fill in the instructions and have a second pass fill in the addresses
12:25 AM rue_mohr: ; This is an example program for the 1 bit processor
12:25 AM rue_mohr: START:
12:25 AM rue_mohr: SETB 1 ; set IO bit 1
12:25 AM rue_mohr: CLRB 1 ; clear IO bit 1
12:25 AM rue_mohr: JPS 6 PULSE
12:25 AM rue_mohr: SETB 2
12:25 AM rue_mohr: CLRB 2
12:25 AM rue_mohr: JMP START
12:25 AM rue_mohr: PULSE:
12:25 AM rue_mohr: SETB 3
12:25 AM rue_mohr: CLRB 3
12:25 AM rue_mohr: JMP START
12:25 AM rue_mohr: START = 0x00
12:25 AM rue_mohr: 0x00: SETB
12:25 AM rue_mohr: 0x01: CLRB
12:25 AM rue_mohr: 0x02: JPS
12:25 AM rue_mohr: 0x03: SETB
12:25 AM rue_mohr: 0x04: CLRB
12:25 AM rue_mohr: 0x05: JMP
12:25 AM rue_mohr: PULSE = 0x06
12:25 AM rue_mohr: 0x06: SETB
12:25 AM rue_mohr: 0x07: CLRB
12:25 AM rue_mohr: 0x08: JMP
01:22 AM rue_mohr: ok I'll continue tommorow
01:45 AM polprog: Where do you have that instruction set rue_mohr ?
01:45 AM polprog: The program looks ok to me
01:45 AM rue_mohr: thats for that 1 bit processor
01:52 AM rue_mohr: I'm going to try to make it as advertized, then grow it
01:52 AM polprog: Yeah
01:52 AM rue_mohr: but there was no assembler posted :(
01:52 AM rue_mohr: http://paste.debian.net/1237196/
01:52 AM rue_mohr: this is what I have so far
01:52 AM rue_mohr: I'm re-arranging it to make it two-pass
01:52 AM rue_mohr: but I really think STOP should be HALT
01:52 AM polprog: HLT
01:52 AM rue_mohr: haha
01:52 AM polprog: i never wrote a compiler/assember
01:52 AM rue_mohr: tahts not a thing
01:52 AM rue_mohr: me either
01:52 AM polprog: It looks interesting
01:52 AM rue_mohr: this is going well considering
01:53 AM rue_mohr: with a lookup function
01:53 AM rue_mohr: oh wait
01:53 AM rue_mohr: wait...
01:53 AM rue_mohr: I did that, I have a variable library
01:54 AM rue_mohr: ok
01:56 AM rue_mohr: varlib.c
01:57 AM rue_mohr: Status_t writeVar (variable_t * this, char * name, double value, char writable);
01:57 AM rue_mohr: Status_t findIndex (varlist_t * this, char * name, unsigned int * index) ;
01:57 AM rue_mohr: Status_t addVar (varlist_t * this, char * name, double value, char writable) ;
01:57 AM rue_mohr: Status_t eraseVar (varlist_t * this, unsigned int i);
01:57 AM rue_mohr: Status_t initVars (varlist_t * this);
01:57 AM rue_mohr: Status_t setVar (varlist_t * this, char * name, double value, char writable) ;
01:57 AM rue_mohr: Status_t setVarVal (varlist_t * this, char * name, double value) ;
01:57 AM rue_mohr: Status_t setVarPerm (varlist_t * this, char * name, char writable) ;
01:57 AM rue_mohr: Status_t evalVar (varlist_t * this, char * name, double * value) ;
01:57 AM rue_mohr: Status_t delVar (varlist_t * this, char * name) ;
01:57 AM rue_mohr: Status_t finiVars (varlist_t * this);
01:57 AM rue_mohr: Status_t dumpVars (varlist_t * this) ;
01:57 AM rue_mohr: Status_t showVar (variable_t * this ) ;
01:59 AM polprog: Time to grab breakfast
02:18 AM rue_mohr: if I use that maybe I can do enum too
02:21 AM rue_mohr: maybe I should make the first pass just gather the labels so I can do everything in the second pass
04:50 AM Tom_L: morning
08:32 AM rue_bed: uuuu
08:33 AM rue_bed: garbage day, I have to scramble
09:44 AM rue_mohr: hehe, the 1 bit computer uses 32 bit instuctions
05:53 PM rue_mohr: power is out
05:53 PM rue_mohr: again
05:53 PM rue_mohr: in 3 days
05:54 PM rue_mohr: }:( my file server in the shop already consumed its ups
05:55 PM rue_mohr: I'm gonna put that thing on a HUGE battery when the power comes back
07:45 PM Tom_L: wb rue_mohr
07:47 PM rue_mohr: ugh
07:47 PM rue_mohr: it was a huge outage
07:48 PM rue_mohr: thats like the 3rd in 3 days
07:48 PM rue_mohr: wtf is going on?
07:49 PM Tom_L: weather related?
07:49 PM rue_mohr: I dont think so
07:52 PM rue_mohr: so I found another 1 bit computer
07:52 PM rue_mohr: hackaday, amazingly similar to this one
07:52 PM rue_mohr: but he didn't make a compiler
07:54 PM rue_mohr: I need a much larger battery on the fileserver and network switch
08:24 PM rue_mohr: 0x00: SETB 4F-01-4F-01
08:24 PM rue_mohr: 0x01: CLRB 0F-02-0F-02
08:24 PM rue_mohr: 0x02: JPS 7E-03-7E-07
08:24 PM rue_mohr: 0x03: SETB 57-04-57-04
08:24 PM rue_mohr: 0x04: NOP 7F-05-7F-05
08:24 PM rue_mohr: 0x05: CLRB 17-06-17-06
08:24 PM rue_mohr: 0x06: JMP 7F-00-7F-00
08:24 PM rue_mohr: 0x07: SETB 5F-08-5F-08
08:24 PM rue_mohr: 0x08: CLRB 1F-09-1F-09
08:24 PM rue_mohr: 0x09: JMP 7F-00-7F-00
08:24 PM rue_mohr: its generating machine code for a few of the instructions.
08:24 PM rue_mohr: working on filling them all out now
08:26 PM Tom_L: :)
08:27 PM rue_mohr: lots of the instructions are like each other
08:27 PM Tom_L: what's that supposed to do?
08:27 PM rue_mohr: for example, nop is just a do-nothing and goes to the next address
08:27 PM rue_mohr: STOP is just a do-nothing that goes to the same address
08:27 PM Tom_L: it should waste some time though
08:27 PM rue_mohr: that code?
08:27 PM Tom_L: yeah
08:27 PM rue_mohr: its kinda twiddles bits based on inputs
08:27 PM Tom_L: not much it appears
08:28 PM rue_mohr: START:
08:28 PM rue_mohr: SETB 1 ; set IO bit 1
08:28 PM rue_mohr: CLRB 1 ; clear IO bit 1
08:28 PM rue_mohr: JPS 6 PULSE
08:28 PM rue_mohr: SETB 2
08:28 PM rue_mohr: NOP
08:28 PM rue_mohr: CLRB 2
08:28 PM rue_mohr: JMP START
08:28 PM rue_mohr: PULSE:
08:28 PM rue_mohr: SETB 3
08:28 PM rue_mohr: CLRB 3
08:28 PM rue_mohr: JMP START
08:28 PM rue_mohr: that is the human code
08:28 PM rue_mohr: there are 8 inputs and 8 outputs
08:28 PM Tom_L: ok
08:28 PM rue_mohr: so SETB 1 is set output 1
08:28 PM Tom_L: 8 io on a 1bit processor?
08:28 PM Tom_L: how's that work?
08:28 PM rue_mohr: its multiplexed
08:28 PM Tom_L: ok
08:29 PM Tom_L: round robin
08:29 PM rue_mohr: there is actually an unused bit
08:29 PM rue_mohr: so it could be 16input and 8 output or vise versa
08:30 PM rue_mohr: https://laughtonelectronics.com/Arcana/One-bit%20computer/One-bit%20computer.html
08:30 PM rue_mohr: it alternates the memory bytes, one for what to do with IO and one for the next address
08:30 PM rue_mohr: which means you save yourself an address counter chip
08:31 PM rue_mohr: those two bits are paired up into "input is true" and "input is false" sets for each address
08:31 PM rue_mohr: if you dont care about the input, you do the same thing regardless of its state
08:32 PM Tom_L: you should have FPGA'd this
08:32 PM rue_mohr: it easily could be
08:32 PM rue_mohr: I might even cpld it
08:32 PM rue_mohr: with an external program rom
08:33 PM rue_mohr: what I find halarious, is how many "kinda normal" instructions I created from it
08:33 PM rue_mohr: NOP
08:33 PM rue_mohr: SETB o
08:33 PM rue_mohr: SETBJMP o, a
08:33 PM rue_mohr: CLRB o
08:33 PM rue_mohr: CLRBJMP o, a
08:33 PM rue_mohr: CPYB i, o
08:33 PM rue_mohr: CPYBJPS i, o, a
08:33 PM rue_mohr: CPYBJPC i, o, a
08:33 PM rue_mohr: CPYBJMP i, o, a
08:34 PM rue_mohr: INVB i, o
08:34 PM rue_mohr: INVBJPS i, o, a
08:34 PM rue_mohr: INVBJPC i, o, a
08:34 PM rue_mohr: INVBJMP i, o, a
08:34 PM rue_mohr: JMP a
08:34 PM rue_mohr: JPS i a
08:34 PM rue_mohr: JPC i a
08:34 PM rue_mohr: FORK i, af, at
08:34 PM rue_mohr: WAITS i
08:34 PM rue_mohr: WAITC i
08:34 PM rue_mohr: STOP
08:34 PM rue_mohr: SKIPC i
08:34 PM rue_mohr: SKIPS i
08:34 PM rue_mohr: REPTC i
08:34 PM rue_mohr: REPTS i
08:34 PM rue_mohr: there are many other things that can be done, but they get crazy, like mmx instructions
08:34 PM rue_mohr: if this bit is set then set that bit, otherwise clear this other bit
08:36 PM rue_mohr: I got close, the CPY instruction reads an input and sets an output to the same thing
08:37 PM rue_mohr: by reversing the true and false, you get the INVB, which takes an input and sets the output to the opposite
08:38 PM rue_mohr: then there is just playing with the addresses
08:38 PM rue_mohr: NOP is just a jump to next instruction
08:38 PM rue_mohr: STOP is just a jump to the same instruction
08:40 PM rue_mohr: things like WAITS (wait for bit to be set) that just jumps to the same address till the input is set, then jumps to the next address
08:40 PM rue_mohr: its kinda fun!
08:43 PM rue_mohr: I love some of these
08:43 PM rue_mohr: REPTC - repeat last instruction until input is clear
08:44 PM rue_mohr: reverse program flow ;)
08:44 PM rue_mohr: testing all these will be a job and a half
08:48 PM Tom_L: REPTC could put it into an endless loop
08:48 PM rue_mohr: yes
08:48 PM rue_mohr: there is a WAITC too that just waits for an input to be clear
08:48 PM Tom_L: you have a cheap saleae right?
08:48 PM Tom_L: i thought you did anyway
08:48 PM rue_mohr: a few, just incase
08:48 PM Tom_L: oh?
08:48 PM rue_mohr: works with the real salae software
08:49 PM Tom_L: runs their software?
08:49 PM Tom_L: cool
08:49 PM Tom_L: that might be handy for testing tis
08:49 PM Tom_L: this
08:49 PM rue_mohr: yea
08:49 PM rue_mohr: I'll carefully write some test programs
08:49 PM Tom_L: it sure worked for testing my programmer
08:50 PM rue_mohr: oh I dont think I knew you had one
08:50 PM Tom_L: that was another good colaboration project
08:50 PM Tom_L: i have an original
08:50 PM Tom_L: 8 input
08:50 PM Tom_L: once again, it paid for itself
08:50 PM rue_mohr: cool
08:50 PM rue_mohr: $$$ :S
08:51 PM Tom_L: this was really the first time i had done much with my new cutters and i must say i'm rather impressed
08:51 PM Tom_L: i'd been using 2 flute all along
08:52 PM Tom_L: where did you get the LA?
08:52 PM Tom_L: it helped him finish his LUFA library too
08:53 PM Tom_L: hard to focus tonight...
08:54 PM rue_mohr: china
08:55 PM Tom_L: link?
08:56 PM rue_mohr: https://www.aliexpress.com/item/1005001417581550.html
08:56 PM rue_mohr: $10
08:56 PM Tom_L: does it come flashed and ready to go?
08:57 PM rue_mohr: they keep the name salae off them now
08:57 PM rue_mohr: yea, plug and play
09:00 PM Tom_L: that was one of the better things to come along
09:01 PM rue_mohr: yea, its awesome for bedside programming on digital projects
09:01 PM Tom_L: :)
09:01 PM Tom_L: i wonder what the software ver is up to now
09:01 PM Tom_L: haven't had mine out in a long time
09:01 PM rue_mohr: CPYBJPC copy bit from input to output, jump if the input was clear
09:02 PM Tom_L: looks like i've got 1.2.28 installed
09:03 PM rue_mohr: I had to use an old version for 32 bit
09:03 PM Tom_L: i've got about 15 versions saved
09:03 PM rue_mohr: sweeet, I finished defining all the instructions!
09:05 PM rue_mohr: I need to be able to push them to a file and I could start testing
09:06 PM Tom_L: that must be the last 32 bit version
09:07 PM rue_mohr: CLRB 1 ; clear IO bit 1
09:07 PM rue_mohr: JPS 6 PULSE
09:07 PM rue_mohr: SETB 2 1 2 3 4 5 6
09:07 PM rue_mohr: NOP
09:07 PM rue_mohr: CLRB 2
09:07 PM rue_mohr: ---
09:07 PM rue_mohr: 0x02: JPS 7E-03-7E-07
09:07 PM rue_mohr: More than 6 params on an instruction? you insane dog, what are you up to?
09:07 PM rue_mohr: 0x03: SETB Wrong number of arguments
09:07 PM rue_mohr: 57-04-57-04
09:07 PM rue_mohr: 0x04: NOP 7F-05-7F-05
09:08 PM rue_mohr: I'm doing really good with the error checking
09:08 PM Tom_L: you writing all that too?
09:08 PM Tom_L: c?
09:08 PM rue_mohr: yea its C
09:08 PM Tom_L: what c?
09:09 PM Tom_L: gnu
09:09 PM Tom_L: ?
09:09 PM rue_mohr: I'm at 586 lines
09:09 PM rue_mohr: yep gcc
09:09 PM rue_mohr: ITS MY FIRST ASSEMBLER!
09:12 PM rue_mohr: STOP or HALT
09:12 PM rue_mohr: I think it should be HALT
09:12 PM Tom_L: yeah ppl run STOP signs all the time
09:13 PM Tom_L: HALT is an officer command which you'd better adhere to
09:13 PM rue_mohr: is a compuiter tho, it only makes the mistakes it was told to
09:14 PM Tom_L: is your saleae software 64bit?
09:14 PM Tom_L: linux
09:15 PM rue_mohr: no 32
09:15 PM Tom_L: what version?
09:15 PM rue_mohr: the machine I have it on is only 32
09:15 PM Tom_L: most of them show 64bit for linux
09:15 PM rue_mohr: oh not sure, its effort to go start up
09:15 PM Tom_L: unless i'm missing it
09:15 PM Tom_L: don't bother
09:15 PM rue_mohr: yea, you have to dig WAY back
09:16 PM rue_mohr: w/effort
09:16 PM rue_mohr: might have required URL hacking, dont recall
09:16 PM Tom_L: 1.2.10
09:17 PM rue_mohr: Logic 1.2.10 (32-bit).zip
09:17 PM Tom_L: latest one that shows 32 bit
09:17 PM rue_mohr: thats on the fileserver under INSTALLS
09:17 PM rue_mohr: so thats probably it
09:24 PM Tom_L: ok i saved them all
09:24 PM Tom_L: 32bit anyway
09:30 PM Tom_L: ok i've got them all now
09:30 PM Tom_L: newer versions added more protocols
09:31 PM rue_mohr: yea, there were a few things I have wished it would devode
09:33 PM Tom_L: 64bit goes up to 1.2.40
09:33 PM Tom_L: how do you tell if linux is 32 or 64 bit?
09:34 PM rue_mohr: hmm
09:34 PM rue_mohr: there is a program that tells things about binary images
09:34 PM rue_mohr: I dont know if it works on the kernel
09:35 PM Tom_L: so the kernel decides?
09:35 PM rue_mohr: kernel determines it
09:35 PM Tom_L: the list on boot should show that
09:35 PM Tom_L: may not tell the bit version
09:36 PM rue_mohr: interesing, looking, not much says much
09:37 PM Tom_L: it's funny all their releases were beta versions :)
09:37 PM rue_mohr: no, I dont see anything
09:38 PM Tom_L: software update... due to supply chain issues, we've changed one of the components....
09:38 PM Tom_L: fpga
09:38 PM Tom_L: mesa is facing the same problem
09:39 PM rue_mohr: 1 bit processors man!
09:43 PM Tom_L: freeze warning tomorrow
09:43 PM rue_mohr: !?!
09:43 PM Tom_L: i thought we were done with that crap
09:43 PM Tom_L: i was slated to do yard work tomorrow
09:44 PM Tom_L: but the high will be 77F
09:44 PM Tom_L: quite a swing
09:44 PM rue_mohr: 077F so its 16 bit
09:46 PM rue_mohr: try this tom
09:46 PM rue_mohr: objdump -p /bin/bash|less
09:46 PM rue_mohr: first line in the result
09:46 PM rue_mohr: /bin/bash: file format elf32-i386
09:46 PM rue_mohr: which IMPLIES, that its 32 bit
09:59 PM Tom_L: ok, i don't have it on right now though
10:17 PM rue_mohr: trimmed to 516 lines...
10:35 PM rue_mohr: hah
10:35 PM rue_mohr: I'm not using my instructions well
10:35 PM rue_mohr: <rue_mohr> CLRB 2
10:35 PM rue_mohr: <rue_mohr> JMP START
10:35 PM rue_mohr: there is a CLRBJMP instruction
10:36 PM rue_mohr: CLRBJMP 2 START
10:36 PM rue_mohr: I suppose I should keep it simple for a bit
10:41 PM WormFood: rue_mohr, sorry I didn't get back to you last night. I had an unexpected number of unplanned things happening. I did look at your 1-bit computer, but I haven't spent enough time understanding it, to comment on it.
10:45 PM rue_mohr: WormFood, not quite mine
10:46 PM rue_mohr: I found another one on hackaday too, almost identicle
10:46 PM rue_mohr: but I'm writing an assembler for it
10:46 PM WormFood: you know what I mean
10:46 PM rue_mohr: indeed
10:46 PM WormFood: yeah, I was curious about that.
10:46 PM rue_mohr: so, the hardware always does the same operation
10:46 PM rue_mohr: I'v made different instructions based on 'masking' the operations
10:46 PM WormFood: it looks like the eprom is making a type of state engine
10:46 PM rue_mohr: I'v made different instructions based on 'masking' the operation
10:47 PM rue_mohr: yes
10:47 PM rue_mohr: thats why its got my attention
10:47 PM WormFood: and did you see the programs written 100% with the mov command?
10:47 PM rue_mohr: you see, when I was about 14? I drew (I dont have it anymore) a state machine that had ram and rom
10:47 PM rue_mohr: they worked off each other,
10:47 PM rue_mohr: I'v been striving to work that out for ages
10:48 PM WormFood: well, it looks like your computer there, has 1 byte of ram ;)
10:48 PM rue_mohr: they did 2 bits on that
10:48 PM rue_mohr: but they have a bit left over
10:48 PM rue_mohr: which I can do so many things with
10:48 PM rue_mohr: I'm trying to stay on track and just get that going first tho
10:48 PM WormFood: An EPROM can be used for a LOT of different things.
10:48 PM rue_mohr: :)
10:49 PM WormFood: you can easily program an eprom to emulate many digital TTL ICs (74xx family)
10:49 PM rue_mohr: what got me about this one, is that he solved the shortage of output bits on the rom by demuxing them
10:49 PM rue_mohr: WormFood, have you seen my C-PLD code?
10:49 PM WormFood: no
10:49 PM rue_mohr: oh,
10:49 PM rue_mohr: you write what you want the rom to do in C and it makes an image
10:50 PM WormFood: that sounds interesting
10:50 PM rue_mohr: 1 sec
10:50 PM * WormFood waits
10:50 PM rue_mohr: https://github.com/ruenahcmohr/C_PLD
10:50 PM * WormFood notes rue_mohr takes much more than "1 sec" ;)
10:50 PM rue_mohr: there is a project called php-pld
10:50 PM rue_mohr: but I wanted a C version
10:51 PM rue_mohr: there's decivingly little to it
10:51 PM rue_mohr: https://github.com/ruenahcmohr/twitterROMdemo/blob/master/main.c
10:52 PM WormFood: it simply doesn't need to be complex
10:52 PM rue_mohr: here is an application of it that writes a message to a hd44780 display
10:52 PM rue_mohr: er
10:53 PM rue_mohr: not quite that one, what ..
10:53 PM rue_mohr: oh thats just a switch value to ascii code
10:53 PM rue_mohr: ok, thats a good LUT example...
10:53 PM WormFood: While I was in prison, I wrote a bit of C code...and debugged it too....and I was able to smuggle it to my consulate, and give it to my girlfriend. I write a bunch of crazy bit manipulation shit, that was kinda cool. I actually still want to write that software.
10:54 PM WormFood: your code there is nifty. It's not big, but it simply doesn't need to be.
10:54 PM WormFood: and with an eprom, you can have multiple outputs
10:55 PM rue_mohr: I'm looking for a great example
10:55 PM WormFood: my girlfriend is coming in about 2 weeks, from China, and she'll bring some of my electronics stuff with her, like my fluke DMM, and my IC programmer, and my DSO (if she can find it)
10:55 PM rue_mohr: https://github.com/ruenahcmohr/KeyBoardLUTGen/blob/master/main.c this is a LUT for my z80 keyboard
10:56 PM rue_mohr: the premise of the code is that the input and outputs are grouped into bit fields
10:56 PM rue_mohr: you can take and put any code you want to handle the input and output values
10:57 PM rue_mohr: the 'libary' will scan thru all the values and use your code to generate the data for the rom
10:57 PM rue_mohr: AHA!
10:57 PM rue_mohr: ok, this is the good one, you still there?
10:58 PM rue_mohr: oh, this isn't the great one, this is just cool
10:58 PM WormFood: yes, very interesting
10:59 PM rue_mohr: https://github.com/ruenahcmohr/serialPlayer/blob/main/main.c
10:59 PM rue_mohr: this
10:59 PM WormFood: I was looking over the code
10:59 PM rue_mohr: this plays a serial message using the rom
10:59 PM rue_mohr: TxDO = SerialMessage("No Computer\n", bitcI);
10:59 PM rue_mohr: ^^ easy to code a message into it!
11:00 PM rue_mohr: I cant find it, but I did the 555 serial ADC with this
11:00 PM rue_mohr: its quite the state machine
11:01 PM WormFood: you know, you could use this to reverse bits....
11:01 PM WormFood: unsigned char b; // reverse this (8-bit) byte
11:01 PM WormFood:
11:01 PM WormFood: b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023;
11:01 PM rue_mohr: :)
11:01 PM rue_mohr: I didn't have to worry about efficiency
11:02 PM WormFood: OR....
11:02 PM WormFood: unsigned char b; // reverse this byte
11:02 PM WormFood: b = ((b * 0x80200802ULL) & 0x0884422110ULL) * 0x0101010101ULL >> 32;
11:02 PM rue_mohr: tahts a cool one tho
11:02 PM WormFood: These 2 functions, are absolute PROOF positive, that *magic* does exist ;)
11:03 PM rue_mohr: part of the evil of the fft thing was that I needed to specify how many bits there were to reverse
11:03 PM rue_mohr: arbitrary lengths like 5 bits
11:03 PM WormFood: you don't need to change the middle bit
11:03 PM rue_mohr: but if its passed as a param
11:03 PM rue_mohr: thats what bits is
11:04 PM rue_mohr: how many of the bits to reverse
11:04 PM rue_mohr: I think in the fft it changes per itteration
11:04 PM rue_mohr: super evil stuff
11:04 PM rue_mohr: so! I have a working assembler (still needs improvements)
11:05 PM rue_mohr: I want to go build some hardware
11:05 PM WormFood: https://github.com/xoreaxeaxeax/movfuscator did you see this? it's a single instruction C compiler. It does everything, with only the MOV instruction
11:05 PM rue_mohr: haha
11:06 PM rue_mohr: I think I heard someone mention this
11:06 PM rue_mohr: the idea anyhow
11:06 PM WormFood: check out that control flow graph comparison
11:06 PM rue_mohr: yea
11:07 PM rue_mohr: I get it
11:07 PM rue_mohr: I understand the caches love it
11:09 PM WormFood: https://www.youtube.com/watch?v=HlUe0TUHOIc <-- this one....was very...VERY...interesting
11:12 PM rue_mohr: :)
11:13 PM rue_mohr: so I need to build some hardware?
11:13 PM rue_mohr: I'll start with the baisc FSM loop
11:14 PM rue_mohr: / int r=0; while (*s) ';'==*s++ && r++; return r;
11:14 PM rue_mohr: / OR sadistic recursion!
11:14 PM rue_mohr: int countOff(char *s, unsigned int v) {
11:14 PM rue_mohr: char *n;
11:14 PM rue_mohr: if ((n = strchr(s, ';')) != NULL) { return countOff(n+1, v+1); }
11:14 PM rue_mohr: return v;
11:15 PM rue_mohr: }
11:15 PM rue_mohr: there are some things I'm sure are out of bounds