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)
5) jump to the beginning of arbitrary 256-byte page (3 bytes):
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
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
3 bits copied from F to highest PC only when something copied to G
Are you sure? yes | no
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