# Lets code a little

A project log for NEDONAND homebrew computer

NEDONAND is 8-bit homebrew computer entirely built out of many 74F00 chips (2-input NAND gates)

NEDONAND may directly addres 2Kbytes of program memory (8 bits in register G and 3 bits in register F - total 11). These are ways to jump in the code:

1) call first 64 bytes of the program memory with 8-byte steps (1 byte):

`10000xxx (0=xxx - RST xxx)`
2) jump to the beginning of the current 256-byte page (1 byte):
`10111000 (G=0)`

3) jump inside of the 1st half of the current 256-byte page (2 bytes):

```0xxxxxxx (A=0xxxxxxx)
10111001 (G=A)
```

4) jump inside of the 2nd half of the current 256-byte page (3 bytes):

```0xxxxxxx (A=0xxxxxxx)
10001001 (A=~A - invert A)
10111001 (G=A)
```

```00000xxx (A=00000xxx)
10110001 (F=A)
10111000 (G=0)
```
6) jump inside of the 1st half of arbitrary 256-byte page (4 bytes):
```00000xxx (A=00000xxx)
00110001 (F=A)
0yyyyyyy (A=0yyyyyyy)
00111001 (G=A)
```

7) jump inside of the 2nd half of arbitrary 256-byte page (5 bytes):

```00000xxx (A=00000xxx)
10110001 (F=A)
0yyyyyyy (A=0yyyyyyy)
10001001 (A=~A - invert A)
10111001 (G=A)
```

Note: value for inversion should be calculated by assembler as 255-A (where A=128...255)

## Discussions

SHAOS wrote 02/25/2016 at 13:18 point

3 bits copied from F to highest PC only when something copied to G

Are you sure? yes | no

James Newton wrote 02/25/2016 at 07:19 point

I don't see how 5 6 and 7 can work... once you set F, doesn't it start executing instructions at the new location? Or is the PC only loaded from F when G is loaded?

Are you sure? yes | no 