-
-
Notifications
You must be signed in to change notification settings - Fork 617
Forth #2947
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Forth #2947
Changes from 10 commits
4165603
e800be7
54641a1
e473ca5
ab80697
92cd9cc
d822781
f9cc26e
5695032
6352221
688734d
9b16fdc
091f503
787f601
a6643bf
f9c1ebb
1551c18
8762b9b
7d7b473
0e3a08c
69452cf
25588aa
896a8a8
6389821
ef3fd39
6e47191
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 0x78, 0xda, 0xed, 0x57, 0xdd, 0x6e, 0xe2, 0x56, 0x10, 0x66, 0xfb, 0x73, 0x51, 0x2e, 0x56, 0xea, 0x1b, 0x4c, 0xb2, 0x52, 0xb5, 0xab, 0x6c, 0x24, 0x6c, 0x20, 0x3f, 0xb4, 0x89, 0x16, 0x88, 0xe9, 0x5a, 0x01, 0x82, 0x80, 0x5d, 0xed, 0x4a, 0xb9, 0x71, 0xec, 0x03, 0xb6, 0x62, 0x6c, 0xcb, 0x36, 0xc1, 0xf4, 0x09, 0x72, 0xd1, 0x87, 0xe8, 0x65, 0x15, 0xf1, 0x10, 0x5c, 0x57, 0xd6, 0x3e, 0xc9, 0x8a, 0x67, 0xe8, 0xcc, 0x39, 0x36, 0xd8, 0xf9, 0x6d, 0xb7, 0x95, 0x7a, 0x53, 0x03, 0x36, 0x9e, 0x99, 0x6f, 0xfe, 0xcf, 0xf8, 0xf8, 0xfb, 0x42, 0xa1, 0xf0, 0xec, 0xb7, 0xaf, 0x0a, 0x4f, 0x1d, 0x9f, 0x62, 0x3c, 0xae, 0xaf, 0xaf, 0x17, 0x37, 0x37, 0x37, 0x0b, 0xba, 0xe2, 0xed, 0x22, 0x5e, 0xae, 0x7f, 0x71, 0xfc, 0x79, 0x75, 0x7d, 0x1d, 0xaf, 0x6e, 0x6e, 0x96, 0xab, 0xeb, 0xdf, 0x97, 0xab, 0x78, 0xb1, 0x8c, 0x97, 0x8b, 0xe5, 0x32, 0xfd, 0xdd, 0x8f, 0x8f, 0x1f, 0xc5, 0xc7, 0x19, 0x7c, 0xe1, 0xff, 0xe3, 0x3f, 0x3d, 0x78, 0xad, 0xa8, 0x76, 0xfc, 0xf3, 0x07, 0xff, 0xff, 0x2b, 0xd6, 0x31, 0x2e, 0x2c, 0x63, 0xac, 0xed, 0xa7, 0x78, 0x51, 0x88, 0xb1, 0x76, 0x9f, 0x17, 0x58, 0xbf, 0x9b, 0xe4, 0x47, 0xf5, 0x2c, 0x2c, 0x3f, 0xaf, 0xe2, 0x78, 0xb5, 0xfa, 0xa7, 0xf8, 0xef, 0x8e, 0xff, 0x99, 0xff, 0x5f, 0x7f, 0xf3, 0xfc, 0x19, 0x76, 0xfa, 0xb7, 0xea, 0xf3, 0xc2, 0x39, 0x84, 0x56, 0x68, 0xb3, 0x1a, 0xc0, 0x5b, 0x66, 0xdb, 0x2e, 0xb4, 0x5c, 0x3f, 0x34, 0x8b, 0xe7, 0xa0, 0x4d, 0x43, 0xd3, 0xf5, 0x6b, 0x30, 0x54, 0x9b, 0xbb, 0x07, 0x25, 0x24, 0x18, 0x2c, 0xd0, 0x51, 0x4a, 0x08, 0xe0, 0xdd, 0xc4, 0x85, 0x5d, 0xd0, 0x4d, 0xcd, 0x19, 0x33, 0x08, 0x4d, 0x06, 0x33, 0xd7, 0x37, 0x40, 0xd7, 0x6c, 0x9b, 0x19, 0x60, 0x39, 0x84, 0x83, 0xd0, 0x85, 0x60, 0x66, 0x85, 0xba, 0x09, 0x2c, 0xd2, 0x26, 0x9e, 0xcd, 0x50, 0x8d, 0x6d, 0xe9, 0xcc, 0x09, 0xd0, 0x5e, 0x47, 0x1d, 0x42, 0x5b, 0xdc, 0x20, 0x39, 0xd0, 0x7d, 0xcb, 0x0b, 0x6b, 0x30, 0x12, 0xe6, 0x91, 0xb2, 0xbb, 0x9b, 0xd8, 0x4e, 0x2c, 0xd6, 0x7b, 0x2a, 0xd2, 0xfe, 0xee, 0x81, 0x8a, 0x4e, 0x7c, 0x6d, 0x66, 0x39, 0x63, 0xfc, 0x07, 0xd0, 0x6c, 0x0f, 0xf0, 0xfc, 0x12, 0x74, 0xd7, 0x76, 0x7d, 0x32, 0xf1, 0x8a, 0x93, 0x7b, 0xea, 0x87, 0x2d, 0x22, 0x47, 0x30, 0xcf, 0xb0, 0x20, 0x39, 0x02, 0x16, 0x82, 0x67, 0x45, 0xcc, 0x4e, 0x65, 0x21, 0x95, 0x45, 0x29, 0x21, 0xbe, 0x96, 0x1d, 0xe7, 0x64, 0xdb, 0x6a, 0x57, 0xe1, 0xb2, 0x25, 0x98, 0x97, 0x20, 0x92, 0x60, 0x2e, 0xdd, 0x36, 0xdd, 0x57, 0x9a, 0xc3, 0x54, 0xdd, 0x0c, 0xcc, 0x5b, 0xe6, 0x47, 0x16, 0xcf, 0xa7, 0xcf, 0xf4, 0x10, 0x13, 0xcd, 0x13, 0x28, 0x20, 0x8d, 0x07, 0x21, 0x6b, 0x59, 0xb8, 0xc0, 0x8a, 0x30, 0x5f, 0xc4, 0xad, 0xf6, 0x9b, 0xa9, 0x15, 0xff, 0x4e, 0x88, 0x89, 0x15, 0xdd, 0xf2, 0xf5, 0xc4, 0x04, 0xc9, 0x37, 0x1e, 0x94, 0x17, 0x82, 0x59, 0xfd, 0x4a, 0xbb, 0xad, 0xa6, 0xfa, 0x35, 0xb8, 0xb8, 0x3f, 0x0a, 0xec, 0x2f, 0xcb, 0x0b, 0xd8, 0x1a, 0xd0, 0x78, 0x10, 0x90, 0x48, 0x66, 0x2d, 0x0c, 0xfb, 0xaa, 0x48, 0x3b, 0x4f, 0x62, 0x24, 0xc3, 0x5c, 0x86, 0xa8, 0x0c, 0xf3, 0x72, 0x0e, 0x9a, 0x58, 0x0a, 0x7d, 0x6b, 0x93, 0x2e, 0x44, 0x36, 0x9e, 0x46, 0xa6, 0x90, 0x5c, 0xd6, 0xda, 0x6a, 0x2f, 0x5b, 0x9b, 0xd4, 0x3d, 0xa2, 0x97, 0x90, 0x2e, 0xee, 0x7d, 0x46, 0x0d, 0xa2, 0xa3, 0xc7, 0xf8, 0x77, 0x6c, 0xb9, 0x0e, 0x62, 0x87, 0x2c, 0x0a, 0x45, 0xb7, 0xf4, 0xd5, 0xee, 0x90, 0x1a, 0x6e, 0x57, 0x33, 0x0c, 0x1f, 0xa6, 0x99, 0x16, 0x1b, 0x61, 0x9b, 0x18, 0xd8, 0xf8, 0x1a, 0x1a, 0xd5, 0xec, 0x90, 0xb4, 0xcd, 0x2c, 0x03, 0x3b, 0x5d, 0x34, 0x46, 0xeb, 0xac, 0xcb, 0x1b, 0x23, 0x8f, 0x34, 0x7d, 0x77, 0xa2, 0x81, 0x3e, 0xc3, 0x7f, 0x4f, 0x29, 0x18, 0xf6, 0xeb, 0x4d, 0x25, 0xab, 0x20, 0xd7, 0x79, 0x03, 0xcf, 0xb7, 0x42, 0x16, 0xc0, 0x0f, 0x30, 0xd1, 0x3c, 0x2e, 0x3f, 0xe8, 0xf5, 0x79, 0x86, 0x2d, 0x63, 0xe3, 0xe4, 0x25, 0x9b, 0x27, 0x06, 0x46, 0x3c, 0x3e, 0x37, 0xd4, 0x42, 0xb6, 0xce, 0x05, 0x87, 0x75, 0xea, 0x3d, 0xb1, 0xa4, 0xb0, 0x68, 0x11, 0x3f, 0xcf, 0xf9, 0x79, 0xc6, 0xcf, 0x26, 0x04, 0x11, 0x04, 0x77, 0xb4, 0x6d, 0xd0, 0x3f, 0x2b, 0xc3, 0xcc, 0x6a, 0x0a, 0x2d, 0x64, 0xf2, 0x1c, 0x77, 0x06, 0x1b, 0x06, 0xa7, 0xae, 0x21, 0xad, 0x04, 0x82, 0x7e, 0x8e, 0x6c, 0x6d, 0x4c, 0x8c, 0x0b, 0xd7, 0xb5, 0x09, 0xd6, 0x22, 0xd0, 0x86, 0x73, 0xa5, 0xd9, 0x29, 0x4c, 0x75, 0xbc, 0xa9, 0xa8, 0x48, 0x63, 0xd8, 0x4d, 0xc3, 0x44, 0x9e, 0x87, 0xd5, 0x0b, 0x30, 0x8b, 0x64, 0xd3, 0x32, 0x82, 0x1a, 0x94, 0x8e, 0xa6, 0x1e, 0x48, 0x47, 0x86, 0x3b, 0x73, 0x40, 0x3e, 0xb2, 0xd9, 0x28, 0x84, 0xf2, 0x91, 0x6f, 0x8d, 0xcd, 0x10, 0x2a, 0x47, 0x75, 0xa8, 0x1e, 0x35, 0x52, 0x2d, 0xbd, 0x44, 0x8b, 0xe9, 0xda, 0x06, 0x78, 0xcc, 0xb7, 0xdc, 0xbc, 0x46, 0x2e, 0x77, 0xaa, 0x7c, 0x4c, 0x06, 0x8e, 0xc1, 0x6e, 0xd9, 0x43, 0x56, 0x2f, 0xe5, 0x3c, 0xaa, 0xa3, 0x73, 0xf6, 0x6e, 0xa0, 0x88, 0x76, 0xa3, 0x6c, 0x70, 0x9f, 0x26, 0x68, 0x58, 0x78, 0x85, 0x93, 0xd3, 0xa5, 0xcc, 0x8b, 0xeb, 0x5c, 0x14, 0xd7, 0x9d, 0x3a, 0x86, 0x28, 0x6a, 0xeb, 0x43, 0x1a, 0xad, 0xe3, 0x62, 0xe9, 0x5c, 0x1c, 0x0e, 0x57, 0x0c, 0x8c, 0xa9, 0xcf, 0x67, 0x37, 0x5c, 0x61, 0xe2, 0x02, 0x8f, 0x31, 0x23, 0x53, 0x92, 0x77, 0x03, 0x9c, 0xdd, 0x2f, 0x71, 0x45, 0x68, 0xfa, 0x25, 0x8c, 0x7c, 0x6d, 0xc2, 0xb0, 0xf0, 0x33, 0xb0, 0x5d, 0xd7, 0x83, 0x60, 0x1a, 0x84, 0x1a, 0x8e, 0xf7, 0x90, 0x4d, 0x3c, 0x37, 0x8f, 0xec, 0xe0, 0x23, 0xc1, 0x9f, 0x8b, 0xae, 0x57, 0x94, 0x53, 0xb2, 0xca, 0x1b, 0xef, 0xc2, 0x0a, 0x03, 0x92, 0xa1, 0x6a, 0x50, 0x9a, 0x7b, 0x67, 0xa7, 0xca, 0x9a, 0x49, 0xc4, 0x54, 0xe0, 0xd5, 0x1a, 0x2b, 0xa5, 0xec, 0x0c, 0x8c, 0x1f, 0x84, 0x95, 0xb2, 0xd8, 0x1c, 0x4c, 0x7e, 0x0c, 0x26, 0x3f, 0x08, 0xab, 0x3c, 0x06, 0xab, 0xdc, 0x0b, 0xeb, 0x28, 0x9d, 0x66, 0xef, 0x23, 0xb2, 0x8c, 0x00, 0x2b, 0xe0, 0xeb, 0x10, 0x58, 0xbf, 0xb0, 0x74, 0x3e, 0x20, 0x53, 0xf4, 0x21, 0x31, 0x09, 0xb6, 0x66, 0x0a, 0x93, 0xc8, 0xe7, 0x25, 0x71, 0x0c, 0x16, 0xdd, 0xb6, 0x49, 0xcc, 0x2d, 0x64, 0x12, 0x6d, 0x2d, 0xc0, 0xb3, 0x6b, 0x05, 0xba, 0x58, 0xd6, 0x6a, 0x47, 0x01, 0x5e, 0x53, 0xe4, 0x4c, 0x02, 0x81, 0x1c, 0x0e, 0x86, 0xf5, 0x4e, 0x4f, 0xd0, 0x02, 0xa6, 0x27, 0x96, 0xde, 0x37, 0xea, 0xdd, 0x53, 0x2e, 0x7a, 0xa1, 0x39, 0x97, 0x49, 0x63, 0x5d, 0x25, 0xcc, 0xc1, 0xc7, 0x6e, 0x53, 0xe8, 0x99, 0x68, 0xc1, 0xa5, 0x90, 0x08, 0x5d, 0x5d, 0xf3, 0xc3, 0x8d, 0xab, 0xca, 0x07, 0x7c, 0x48, 0xa7, 0xb6, 0x52, 0x17, 0xfb, 0x4a, 0xb2, 0x34, 0xd3, 0x49, 0x82, 0xa3, 0xd3, 0x19, 0x83, 0xc9, 0x6c, 0x6c, 0x60, 0x78, 0x69, 0xb0, 0x91, 0xe5, 0x60, 0x57, 0x5c, 0x30, 0xdb, 0x9d, 0x09, 0x35, 0xce, 0x71, 0x10, 0xfa, 0x84, 0x70, 0xf8, 0x13, 0x33, 0x9d, 0x47, 0xaf, 0xf8, 0x53, 0xfe, 0x5f, 0x38, 0x8a, 0xc5, 0xf7, 0xf5, 0xbe, 0x5a, 0x6f, 0xb4, 0x15, 0xb4, 0x40, 0xc7, 0x79, 0xd2, 0xb6, 0x3a, 0xae, 0x83, 0x10, 0x87, 0xf9, 0x9a, 0xed, 0x45, 0x82, 0x1d, 0xf0, 0xe9, 0x07, 0x51, 0x86, 0x33, 0xcf, 0x71, 0xe6, 0x45, 0x74, 0xee, 0x8e, 0xc3, 0x38, 0x23, 0x50, 0xdf, 0x18, 0xc3, 0xa4, 0xad, 0x0d, 0x8f, 0xbb, 0x58, 0x4b, 0xc3, 0x1b, 0x1c, 0x9f, 0xc0, 0x4f, 0x2f, 0xe0, 0xc5, 0x00, 0x5e, 0x1c, 0xc3, 0x8f, 0x02, 0x9f, 0x1b, 0xde, 0x22, 0x87, 0xa8, 0xdf, 0x09, 0x61, 0x66, 0x92, 0x15, 0x0d, 0x37, 0x0b, 0x6e, 0x60, 0x85, 0xf8, 0xd0, 0x78, 0x9d, 0x4c, 0x46, 0x09, 0x15, 0x22, 0x19, 0xa4, 0x2a, 0xb4, 0xea, 0x6d, 0x5c, 0xf7, 0x52, 0x72, 0x15, 0x4f, 0x92, 0x93, 0xfe, 0x59, 0x8f, 0x94, 0xd7, 0xa0, 0x71, 0x76, 0x36, 0x2c, 0x02, 0x1c, 0xee, 0x51, 0x50, 0xb8, 0x7b, 0x91, 0x2b, 0x14, 0xc3, 0x16, 0x92, 0x06, 0xdb, 0xc9, 0x96, 0x89, 0x44, 0xb6, 0x41, 0x92, 0xc5, 0xa3, 0xa0, 0xc8, 0x7d, 0x42, 0x27, 0x4e, 0x68, 0xef, 0x26, 0x41, 0x0d, 0x02, 0x53, 0xf3, 0x58, 0xf0, 0x25, 0xbb, 0xaa, 0x1a, 0xdf, 0x00, 0x96, 0x24, 0xb4, 0x56, 0xa2, 0x4d, 0x15, 0xbf, 0xca, 0xf8, 0x2d, 0x1f, 0xd2, 0x65, 0x8f, 0xef, 0x7c, 0x90, 0x28, 0xe1, 0x4d, 0x89, 0x9f, 0xa5, 0x72, 0x35, 0x43, 0x2e, 0x41, 0xb9, 0x04, 0xfb, 0x78, 0xae, 0x82, 0xcc, 0xf7, 0x33, 0x14, 0x49, 0x86, 0x58, 0x16, 0x9b, 0x1c, 0xa4, 0x56, 0xab, 0x70, 0x58, 0x25, 0x9d, 0x15, 0xbe, 0x29, 0xc9, 0x52, 0xaa, 0x62, 0x9b, 0x42, 0xfa, 0x10, 0x85, 0xb4, 0x4a, 0x15, 0xa4, 0x03, 0x38, 0xe4, 0x9b, 0x8b, 0xdb, 0xd4, 0x3d, 0xb1, 0xe5, 0x10, 0xc6, 0xf7, 0xab, 0x64, 0x07, 0xcf, 0x95, 0x12, 0xa9, 0x3b, 0xa0, 0x3d, 0x82, 0xf0, 0x00, 0x69, 0x52, 0x55, 0x5c, 0x64, 0xce, 0xdb, 0xe7, 0xfb, 0x07, 0x64, 0x3a, 0xf0, 0x06, 0x8d, 0x96, 0x70, 0x1a, 0x9f, 0x90, 0x9f, 0x3b, 0x40, 0x60, 0x2a, 0x13, 0x6d, 0x1e, 0x45, 0xd6, 0x29, 0xba, 0x6d, 0xa4, 0x53, 0xdc, 0x58, 0x44, 0x41, 0xa4, 0x40, 0xb6, 0xb9, 0xd5, 0xbd, 0x83, 0x1c, 0xb1, 0xb1, 0x4d, 0x06, 0x33, 0x44, 0x8a, 0x06, 0x25, 0xcb, 0x7b, 0x20, 0x49, 0x1b, 0x2a, 0xb9, 0x4d, 0x78, 0x0a, 0x23, 0x43, 0x46, 0xaf, 0x90, 0x4a, 0x55, 0xdf, 0xcf, 0x11, 0x1b, 0xdc, 0x56, 0x29, 0xa1, 0xe6, 0x4a, 0x2e, 0x53, 0xc9, 0x45, 0x7b, 0xef, 0x80, 0xe6, 0xd3, 0x4c, 0xc7, 0x27, 0xf2, 0x5f, 0xac, 0x7f, 0x5a, 0x72, 0x99, 0x97, 0x9a, 0x1e, 0xa2, 0x6a, 0x0b, 0xa8, 0xe3, 0xde, 0x80, 0xb4, 0xcb, 0x3b, 0x0f, 0x86, 0x6f, 0x95, 0x2e, 0xe5, 0xf7, 0x16, 0x77, 0x27, 0xc7, 0x95, 0x37, 0xdc, 0x28, 0xc1, 0x46, 0x1b, 0x6e, 0xf9, 0x16, 0x77, 0x27, 0xc7, 0x95, 0xca, 0x49, 0xaf, 0x49, 0x82, 0x2d, 0xf4, 0x57, 0x10, 0x45, 0x5d, 0x26, 0xe3, 0x07, 0xf7, 0x30, 0x22, 0x13, 0x99, 0x97, 0x99, 0xad, 0x6d, 0x38, 0xa8, 0xd0, 0xf7, 0x91, 0x25, 0x95, 0x4f, 0x54, 0x19, 0x13, 0x95, 0x1b, 0x20, 0xf0, 0x05, 0x6b, 0xa3, 0x9c, 0x59, 0x1b, 0xa9, 0x43, 0xaf, 0xb3, 0x1e, 0x55, 0x0e, 0x36, 0x1e, 0xc9, 0x77, 0x3d, 0x12, 0x1d, 0x27, 0x66, 0x8b, 0x24, 0xed, 0xc1, 0xa1, 0x4c, 0xa1, 0x3e, 0x19, 0x40, 0xf3, 0xfe, 0x37, 0x32, 0x93, 0xf9, 0x2c, 0xf3, 0x3e, 0x26, 0x5e, 0xdf, 0x1e, 0x0c, 0x00, 0x5f, 0xbc, 0x8a, 0x34, 0x0c, 0xd7, 0x8b, 0x7c, 0x53, 0xfb, 0xf3, 0x4d, 0x74, 0x8e, 0xa8, 0x90, 0x83, 0x43, 0x07, 0xad, 0xff, 0x09, 0x5d, 0x54, 0x59, 0xe4, |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,139 @@ | ||
| ################################ | ||
| # Forth (pForth) | ||
| ################################ | ||
|
|
||
| option(BUILD_WITH_FORTH "Forth Enabled" ${BUILD_WITH_ALL}) | ||
| message("BUILD_WITH_FORTH: ${BUILD_WITH_FORTH}") | ||
|
|
||
| if(BUILD_WITH_FORTH) | ||
|
|
||
| set(PFORTH_DIR ${THIRDPARTY_DIR}/pforth/csrc) | ||
| set(PFORTH_FTH_DIR ${THIRDPARTY_DIR}/pforth/fth) | ||
|
|
||
| # ------------------------------------------------------------------------- | ||
| # pforth C sources — all files from sources.cmake, excluding the default | ||
| # pfcustom.c (our forth.c serves as the replacement). | ||
| # ------------------------------------------------------------------------- | ||
| set(PFORTH_KERNEL_SOURCES | ||
| ${PFORTH_DIR}/pf_cglue.c | ||
| ${PFORTH_DIR}/pf_clib.c | ||
| ${PFORTH_DIR}/pf_core.c | ||
| ${PFORTH_DIR}/pf_inner.c | ||
| ${PFORTH_DIR}/pf_io.c | ||
| ${PFORTH_DIR}/pf_io_none.c | ||
| ${PFORTH_DIR}/pf_mem.c | ||
| ${PFORTH_DIR}/pf_save.c | ||
| ${PFORTH_DIR}/pf_text.c | ||
| ${PFORTH_DIR}/pf_words.c | ||
| ${PFORTH_DIR}/pfcompil.c | ||
| ${PFORTH_DIR}/paging/pagedmem.c | ||
| ${PFORTH_DIR}/paging/lockpage.c | ||
| ${PFORTH_DIR}/paging/qadmpage.c | ||
| ) | ||
|
|
||
| # ------------------------------------------------------------------------- | ||
| # pfdicdat.h — pre-compiled standard dictionary for pforth. | ||
| # Cell size (32 vs 64 bit) must match the target platform: | ||
| # cmake/pfdicdat.h — 64-bit (x86-64, ARM64, …) | ||
| # cmake/pfdicdat_32.h — 32-bit (WASM/Emscripten, 32-bit ARM, …) | ||
| # To regenerate after updating pforth: | ||
| # 64-bit: cd vendor/pforth && cmake . && make pforth_dic_header | ||
| # cp vendor/pforth/csrc/pfdicdat.h cmake/pfdicdat.h | ||
| # 32-bit: cmake -DCMAKE_C_COMPILER=gcc-13 -DCMAKE_C_FLAGS=-m32 \ | ||
| # -DCMAKE_CXX_COMPILER_WORKS=TRUE \ | ||
| # -S vendor/pforth -B /tmp/pf32 && \ | ||
| # cmake --build /tmp/pf32 --target pforth_dic_header && \ | ||
| # cp vendor/pforth/csrc/pfdicdat.h cmake/pfdicdat_32.h | ||
| # ------------------------------------------------------------------------- | ||
| set(PFORTH_DICDAT ${PFORTH_DIR}/pfdicdat.h) | ||
|
|
||
| # Use the 32-bit dictionary only for Emscripten/WASM; all other targets | ||
| # (including 32-bit ARM like 3DS or RPI) use the 64-bit dictionary as | ||
| # a fallback — those builds were already broken before this change. | ||
| if(EMSCRIPTEN) | ||
| set(_PFORTH_DICDAT_BUNDLED "${CMAKE_SOURCE_DIR}/cmake/pfdicdat_32.h") | ||
| else() | ||
| set(_PFORTH_DICDAT_BUNDLED "${CMAKE_SOURCE_DIR}/cmake/pfdicdat.h") | ||
| endif() | ||
|
|
||
| if(NOT EXISTS ${PFORTH_DICDAT}) | ||
| if(EXISTS ${_PFORTH_DICDAT_BUNDLED}) | ||
| message(STATUS "Forth: copying bundled ${_PFORTH_DICDAT_BUNDLED} to ${PFORTH_DICDAT}") | ||
| configure_file(${_PFORTH_DICDAT_BUNDLED} ${PFORTH_DICDAT} COPYONLY) | ||
| else() | ||
| message(STATUS "Forth: pfdicdat.h not found — bootstrapping pforth to generate it...") | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we can use pforth to bootstrap the
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @MineRobber9000 that's a good question. I've initially let it generate the It should be fixed now. I've tested the nintendo 3DS build and it's working fine.
|
||
| set(_PFORTH_BOOTSTRAP_DIR "${CMAKE_BINARY_DIR}/pforth_bootstrap") | ||
| execute_process( | ||
| COMMAND ${CMAKE_COMMAND} -G "Unix Makefiles" | ||
| -DCMAKE_CXX_COMPILER_WORKS=TRUE | ||
| -S "${THIRDPARTY_DIR}/pforth" -B "${_PFORTH_BOOTSTRAP_DIR}" | ||
| RESULT_VARIABLE _pforth_cfg_result | ||
| ) | ||
| execute_process( | ||
| COMMAND ${CMAKE_COMMAND} --build "${_PFORTH_BOOTSTRAP_DIR}" | ||
| --target pforth_dic_header | ||
| RESULT_VARIABLE _pforth_build_result | ||
| ) | ||
| if(NOT EXISTS ${PFORTH_DICDAT}) | ||
| message(FATAL_ERROR | ||
| "Forth: failed to generate pfdicdat.h at ${PFORTH_DICDAT}.\n" | ||
| "Try manually: cd ${THIRDPARTY_DIR}/pforth && cmake . && make pforth_dic_header\n" | ||
| "Then: cp ${THIRDPARTY_DIR}/pforth/csrc/pfdicdat.h ${_PFORTH_DICDAT_BUNDLED}") | ||
| endif() | ||
| message(STATUS "Forth: pfdicdat.h generated successfully") | ||
| endif() | ||
| endif() | ||
|
|
||
| # ------------------------------------------------------------------------- | ||
| # forthdemo.tic.dat — demo cartridge for 'new forth' command. | ||
| # Source: demos/forthdemo.fth | ||
| # Regenerate (after building prj2cart and bin2txt): | ||
| # prj2cart demos/forthdemo.fth /tmp/forthdemo.tic | ||
| # bin2txt /tmp/forthdemo.tic build/assets/forthdemo.tic.dat -z | ||
| # ------------------------------------------------------------------------- | ||
|
|
||
| # ------------------------------------------------------------------------- | ||
| # TIC-80 forth library | ||
| # ------------------------------------------------------------------------- | ||
| set(FORTH_SRC | ||
| ${PFORTH_KERNEL_SOURCES} | ||
| ${CMAKE_SOURCE_DIR}/src/api/forth.c | ||
| ${CMAKE_SOURCE_DIR}/src/api/forth_io.c | ||
| ${CMAKE_SOURCE_DIR}/src/api/parse_note.c | ||
| ) | ||
|
|
||
| add_library(forth ${TIC_RUNTIME} ${FORTH_SRC}) | ||
|
|
||
| if(NOT BUILD_STATIC) | ||
| set_target_properties(forth PROPERTIES PREFIX "") | ||
| endif() | ||
|
|
||
| target_compile_definitions(forth INTERFACE TIC_BUILD_WITH_FORTH=1) | ||
|
|
||
| target_compile_definitions(forth PRIVATE | ||
| PF_STATIC_DIC # load the pre-compiled dictionary from pfdicdat.h | ||
| PF_SUPPORT_FP # enable floating-point word set | ||
| PF_NO_FILEIO # stub out file I/O (no filesystem in cartridges) | ||
| PF_DEMAND_PAGING=0 | ||
| ) | ||
|
|
||
|
|
||
| target_link_libraries(forth PRIVATE runtime) | ||
|
|
||
| target_include_directories(forth | ||
| PRIVATE | ||
| # pfdicdat.h lives here; must come before any other include that | ||
| # could shadow it. | ||
| ${PFORTH_DIR} | ||
| ${CMAKE_SOURCE_DIR}/include | ||
| ${CMAKE_SOURCE_DIR}/src | ||
| ) | ||
|
|
||
| # Suppress warnings from pforth's own C files to avoid noise in TIC-80 | ||
| # build logs (pforth was not written to match TIC-80's warning flags). | ||
| foreach(SRC ${PFORTH_KERNEL_SOURCES}) | ||
| set_source_files_properties(${SRC} PROPERTIES COMPILE_FLAGS | ||
| "-w") | ||
| endforeach() | ||
|
|
||
| endif(BUILD_WITH_FORTH) | ||

Uh oh!
There was an error while loading. Please reload this page.