We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
BitwiseยปEpisode Guide
Implementing Forth
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l
โ†
โ†‘
โ†“
โ†’

Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:09Recap and set the stage for the day working on a FORTH system1
๐Ÿ—ฉ
0:09Recap and set the stage for the day working on a FORTH system1
๐Ÿ—ฉ
0:09Recap and set the stage for the day working on a FORTH system1
๐Ÿ—ฉ
2:13Point out Sean's 1992 IOCCC entry 'FIRST & THIRD almost FORTH'2 and others
๐Ÿ“–
2:13Point out Sean's 1992 IOCCC entry 'FIRST & THIRD almost FORTH'2 and others
๐Ÿ“–
2:13Point out Sean's 1992 IOCCC entry 'FIRST & THIRD almost FORTH'2 and others
๐Ÿ“–
10:17Point out Lennart Augustsson's 1996 IOCCC entry 'august'3
๐Ÿ“–
10:17Point out Lennart Augustsson's 1996 IOCCC entry 'august'3
๐Ÿ“–
10:17Point out Lennart Augustsson's 1996 IOCCC entry 'august'3
๐Ÿ“–
12:55Point out JONESFORTH4 with a little comparison with Sean's 'FIRST & THIRD almost FORTH'5
๐Ÿ“–
12:55Point out JONESFORTH4 with a little comparison with Sean's 'FIRST & THIRD almost FORTH'5
๐Ÿ“–
12:55Point out JONESFORTH4 with a little comparison with Sean's 'FIRST & THIRD almost FORTH'5
๐Ÿ“–
18:24Review the addition of if in the assembler
๐Ÿ“–
18:24Review the addition of if in the assembler
๐Ÿ“–
18:24Review the addition of if in the assembler
๐Ÿ“–
20:02Set up to implement our FORTH system, creating forth.asm, forth_test() and assemble_file()
20:02Set up to implement our FORTH system, creating forth.asm, forth_test() and assemble_file()
20:02Set up to implement our FORTH system, creating forth.asm, forth_test() and assemble_file()
34:57Run it to see that it looks good
๐Ÿƒ
34:57Run it to see that it looks good
๐Ÿƒ
34:57Run it to see that it looks good
๐Ÿƒ
35:18FORTH, as a stack-oriented language
๐Ÿ—ฉ
35:18FORTH, as a stack-oriented language
๐Ÿ—ฉ
35:18FORTH, as a stack-oriented language
๐Ÿ—ฉ
37:32Introduce cmd_reg() to support register aliasing
37:32Introduce cmd_reg() to support register aliasing
37:32Introduce cmd_reg() to support register aliasing
39:54Test our new .reg instruction
๐Ÿƒ
๐Ÿ–ฎ
39:54Test our new .reg instruction
๐Ÿƒ
๐Ÿ–ฎ
39:54Test our new .reg instruction
๐Ÿƒ
๐Ÿ–ฎ
40:34Set up FORTH register roles: sp (stack pointer), pc (program counter) and rsp (return stack pointer)
40:34Set up FORTH register roles: sp (stack pointer), pc (program counter) and rsp (return stack pointer)
40:34Set up FORTH register roles: sp (stack pointer), pc (program counter) and rsp (return stack pointer)
43:28Indirect threading-style FORTH, like JONESFORTH6
๐Ÿ—ฉ
43:28Indirect threading-style FORTH, like JONESFORTH6
๐Ÿ—ฉ
43:28Indirect threading-style FORTH, like JONESFORTH6
๐Ÿ—ฉ
47:16Create an add routine, initially in direct threading style
47:16Create an add routine, initially in direct threading style
47:16Create an add routine, initially in direct threading style
53:30Set aside space for the stack
53:30Set aside space for the stack
53:30Set aside space for the stack
56:57Rename add to do_add and introduce do_push to push values onto the stack
56:57Rename add to do_add and introduce do_push to push values onto the stack
56:57Rename add to do_add and introduce do_push to push values onto the stack
1:00:51Enable cmd_uint32() to support variable initialisation from labels
1:00:51Enable cmd_uint32() to support variable initialisation from labels
1:00:51Enable cmd_uint32() to support variable initialisation from labels
1:02:53Run it to find that it assembled, but unexpectedly subtracts 8 from t1
๐Ÿƒ
1:02:53Run it to find that it assembled, but unexpectedly subtracts 8 from t1
๐Ÿƒ
1:02:53Run it to find that it assembled, but unexpectedly subtracts 8 from t1
๐Ÿƒ
1:05:16Consider what may be wrong with cmd_la()
๐Ÿ“–
1:05:16Consider what may be wrong with cmd_la()
๐Ÿ“–
1:05:16Consider what may be wrong with cmd_la()
๐Ÿ“–
1:07:19Run it and talk through the program execution
๐Ÿƒ
1:07:19Run it and talk through the program execution
๐Ÿƒ
1:07:19Run it and talk through the program execution
๐Ÿƒ
1:08:34Step through cmd_la() and inspect the asm
๐Ÿƒ
1:08:34Step through cmd_la() and inspect the asm
๐Ÿƒ
1:08:34Step through cmd_la() and inspect the asm
๐Ÿƒ
1:12:07Test loading into t1 from the program_start label
1:12:07Test loading into t1 from the program_start label
1:12:07Test loading into t1 from the program_start label
1:12:29Run it to find that this works, and it is loading correctly after all, only the disassembler doesn't account for the offset
๐Ÿƒ
1:12:29Run it to find that this works, and it is loading correctly after all, only the disassembler doesn't account for the offset
๐Ÿƒ
1:12:29Run it to find that this works, and it is loading correctly after all, only the disassembler doesn't account for the offset
๐Ÿƒ
1:14:02Run our entire FORTH system
๐Ÿƒ
1:14:02Run our entire FORTH system
๐Ÿƒ
1:14:02Run our entire FORTH system
๐Ÿƒ
1:16:06Create a do_print routine
1:16:06Create a do_print routine
1:16:06Create a do_print routine
1:18:12Run it to see our printout
๐Ÿƒ
1:18:12Run it to see our printout
๐Ÿƒ
1:18:12Run it to see our printout
๐Ÿƒ
1:18:59Rename do_print to do_emit and enable it to print a newline and subtract '0' from the ASCII value
1:18:59Rename do_print to do_emit and enable it to print a newline and subtract '0' from the ASCII value
1:18:59Rename do_print to do_emit and enable it to print a newline and subtract '0' from the ASCII value
1:20:34Run it to see ILLEGAL instructions
๐Ÿƒ
1:20:34Run it to see ILLEGAL instructions
๐Ÿƒ
1:20:34Run it to see ILLEGAL instructions
๐Ÿƒ
1:21:35Call do_push after do_add instructions
1:21:35Call do_push after do_add instructions
1:21:35Call do_push after do_add instructions
1:22:19Run it to look for our printout
๐Ÿƒ
1:22:19Run it to look for our printout
๐Ÿƒ
1:22:19Run it to look for our printout
๐Ÿƒ
1:22:58Fix our program to + '0'
1:22:58Fix our program to + '0'
1:22:58Fix our program to + '0'
1:23:04Run it to see our 3
๐Ÿƒ
1:23:04Run it to see our 3
๐Ÿƒ
1:23:04Run it to see our 3
๐Ÿƒ
1:23:38Enable cmd_loop() to toggle "quiet" running on a key press
1:23:38Enable cmd_loop() to toggle "quiet" running on a key press
1:23:38Enable cmd_loop() to toggle "quiet" running on a key press
1:24:49Rename do_emit to do_putchar and create a do_getchar routine
1:24:49Rename do_emit to do_putchar and create a do_getchar routine
1:24:49Rename do_emit to do_putchar and create a do_getchar routine
1:25:39Run it to see our 3
๐Ÿƒ
1:25:39Run it to see our 3
๐Ÿƒ
1:25:39Run it to see our 3
๐Ÿƒ
1:25:47Enable our program to add user-input values
1:25:47Enable our program to add user-input values
1:25:47Enable our program to add user-input values
1:26:53Run it to see that it doesn't work
๐Ÿƒ
1:26:53Run it to see that it doesn't work
๐Ÿƒ
1:26:53Run it to see that it doesn't work
๐Ÿƒ
1:27:05Fix our input handling
1:27:05Fix our input handling
1:27:05Fix our input handling
1:28:15Step through our program to see how it handles our input
๐Ÿƒ
1:28:15Step through our program to see how it handles our input
๐Ÿƒ
1:28:15Step through our program to see how it handles our input
๐Ÿƒ
1:30:29Fix our program to do_add the final '0'
1:30:29Fix our program to do_add the final '0'
1:30:29Fix our program to do_add the final '0'
1:30:49Run it to see that it's correct
๐Ÿƒ
1:30:49Run it to see that it's correct
๐Ÿƒ
1:30:49Run it to see that it's correct
๐Ÿƒ
1:31:09Direct and indirect threading
๐Ÿ—ฉ
1:31:09Direct and indirect threading
๐Ÿ—ฉ
1:31:09Direct and indirect threading
๐Ÿ—ฉ
1:34:05That's all we have time for today
๐Ÿ—ฉ
1:34:05That's all we have time for today
๐Ÿ—ฉ
1:34:05That's all we have time for today
๐Ÿ—ฉ