00:00:00 --- log: started forth/21.01.20 00:40:37 --- join: cheater joined #forth 00:41:35 --- quit: astrid (Ping timeout: 256 seconds) 00:42:16 --- join: astrid joined #forth 01:01:00 --- quit: proteus-guy (Ping timeout: 264 seconds) 01:07:05 --- quit: iyzsong (Quit: ZNC 1.7.5 - https://znc.in) 01:07:27 --- join: iyzsong joined #forth 01:31:23 --- quit: hosewiejacke (Ping timeout: 272 seconds) 01:32:02 --- join: dave0 joined #forth 01:55:27 --- quit: dysprosaic (Ping timeout: 272 seconds) 03:30:59 --- quit: dave0 (Quit: dave's not here) 04:56:13 --- join: gravicappa joined #forth 05:35:25 --- quit: cheater (Ping timeout: 265 seconds) 07:19:25 --- join: cheater joined #forth 07:44:10 --- quit: iyzsong (Quit: ZNC 1.7.5 - https://znc.in) 07:45:34 --- join: iyzsong joined #forth 08:30:18 --- join: WickedShell joined #forth 09:25:58 --- quit: cheater (Ping timeout: 265 seconds) 09:27:30 --- join: cheater joined #forth 10:10:47 --- quit: cheater (Ping timeout: 240 seconds) 10:55:50 --- join: X-Scale` joined #forth 10:56:21 --- quit: X-Scale (Ping timeout: 265 seconds) 10:59:40 --- join: X-Scale joined #forth 11:01:31 --- quit: X-Scale` (Ping timeout: 256 seconds) 11:03:50 --- join: cheater joined #forth 11:03:58 --- join: X-Scale` joined #forth 11:05:03 cheater: You mean like 'BASIC's implemented in forth? 11:05:18 --- quit: X-Scale (Ping timeout: 240 seconds) 11:05:18 --- nick: X-Scale` -> X-Scale 11:06:03 There might be some, probably not many though, they were popular back when if you wanted a BASIC then you implemented a BASIC in machine code, not anything else. 11:06:40 hi 11:06:40 yes 11:06:46 The ZX Spectrum's BASIC had a calculator stack VM it used for storing its mathematical functions 11:06:59 I think that's probably stolen from something like an old HP BASIC 11:07:18 so the basic is implemented on top of that vm? 11:07:48 And really, most interpreted languages boil down to a stack-based VM, like most JS implementations are a just-in-time optimised version of that, and the JVM 11:07:57 No just the maths functions 11:08:30 The BASIC was implemented in assembly, and some maths functions used the calculator stack. Well I think any numerical operations used it 11:08:46 is that true? i thought a lot of vms are register machines 11:08:48 It was a convoluted floating point representation 11:09:12 I say 'VM' but really it was just a bunch of functions that operated on a stack containing numbers 11:09:21 ok 11:10:43 http://www.primrosebank.net/computers/zxspectrum/docs/CompleteSpectrumROMDisassemblyThe.pdf 11:12:57 Page 190 is the start of the table of operations that the internal stack-based calculator supports 11:13:39 Like 'exchange' is the SWAP 11:18:45 --- quit: Vedran (Read error: Connection reset by peer) 11:18:48 stack-based VMs are often found in small systems just to save space 11:19:43 --- join: Vedran joined #forth 11:22:55 --- quit: gravicappa (Ping timeout: 272 seconds) 11:58:26 --- quit: Vedran (Read error: Connection reset by peer) 11:58:49 --- join: Vedran joined #forth 12:40:12 --- join: X-Scale` joined #forth 12:42:15 --- join: iyzsong- joined #forth 12:42:16 --- quit: X-Scale (Ping timeout: 256 seconds) 12:42:16 --- quit: iyzsong (Ping timeout: 256 seconds) 12:42:17 --- nick: iyzsong- -> iyzsong 12:42:18 --- nick: X-Scale` -> X-Scale 12:42:57 --- quit: Vedran (Ping timeout: 256 seconds) 12:43:16 --- join: Vedran joined #forth 13:41:52 --- join: dave0 joined #forth 13:52:22 veltas: save space compared to what? 14:05:47 a register based system for example 14:13:33 --- quit: xek (Ping timeout: 265 seconds) 14:52:33 what would the difference be? sorry 14:53:05 why does a register based impl not save space like a stack based one does? 14:53:40 depends on the system but in general, a register based system has to have some way of specifiying source and destination 14:54:05 while in a stack based its always stack relative so there is less information to encode 15:28:08 --- quit: inode (Quit: ) 17:06:18 MrMobius: sorry, what do you mean by source and destination? can you show some examples please? 17:15:37 cheater, depends on the architecture but on an 8 bit one like 6502 adding 16 bit var1 to var2 and storing it in var3 (or back in var2) is one load, one add, and one store operation per 8 bits. thats 6 operations for 16 bits. each operation is 3 bytes so 18 bytes for that sequence 17:15:56 --- quit: dave0 (Quit: dave's not here) 17:16:46 in token based forth, it might be one 3 byte instruction to load the 16 bit value, one 3 byte instruction to load the second, then one 1 byte instruction to add, so only 7 bytes if keeping the answer on the stack 17:17:01 maybe less than 7 bytes if the one of the numbers is already on the stack 17:18:01 i see 17:18:05 calculations will be different for other architectures though especially for something with lots of registers 17:18:07 no store operation either 17:18:15 because it auto goes on the stack 17:18:27 yeah the 6502 has only one register 17:18:40 why is the load instruction 3 bytes on 6502? 17:18:56 one byte instruction and 2 byte address 17:19:07 could also be one byte constant instead of address or one byte address 17:19:10 oh. right 17:19:36 one byte constant would be 2 bytes then 17:19:46 right 17:19:48 and one byte address refers to the first 256 bytes on page 0, right? 17:19:56 yep 17:20:01 hmm... that's smart. 17:20:03 thanks. 17:20:15 so btw, i'm not thinking of putting this on a 6502 right now 17:20:27 what i'm currently thinking about is putting stuff on more advanced processors 17:20:32 like say arm 17:20:38 so my idea is.. 17:21:16 you know how people make their own keyboards, right? they often use an advanced microcontroller like an arm 17:21:22 usually very powerful 17:21:48 and they want things like macros, and they want configurable input and output capabilities, and display control, and a bunch of other stuff 17:22:40 to me it sounds like what an 8-bit computer would normally do. so what i thought was, if the cpu is this powerful, it should certainly be able to pull of the functionality of an 8-bit home computer (without necessarily being 8-bit or hardware-limited) 17:22:53 so it would be nice to have a "home computer" kind of thing built into every keyboard. 17:23:13 advanced macros written in bash 17:23:29 i/o stuff and other low level things written in forth if they want 17:23:42 (eg serial communication for example) 17:23:59 you could have a nice little system this way 17:24:36 and if it catches on with keyboards, i mean manufacturers are increasingly using qmk, which imo is kind of a kludge and there's certainly going to be new stuff that'll replace it. 17:24:37 so 17:25:05 a bunch of new keyboards could have nice little home computers on them. with bash and forth. that would be cool, right? 17:25:43 and you're not limited by hardware, because you're not running on an actual 8-bit micro 17:26:10 so you're free to be a little inefficient, and the whole idea behind using bash and forth is just about using a language that feels right for the kind of thing it's doing 17:26:43 --- quit: pareidolia (Quit: ZNC 1.7.3 - https://znc.in) 17:26:48 my friend have you seen the Raspberry Pi 400? 17:27:30 --- join: pareidolia joined #forth 17:27:48 yeah in fact i've thought that it would be a nice hardware platform to do something like this 17:27:50 but 17:27:58 eventually you'd want a self contained system 17:28:01 that can be mass produced 17:28:07 raspberry pi is just a linux computer 17:28:23 ok 17:28:24 it's not anything at all like an 80s home computer 17:29:06 what would a home computer that boots into basic or forth but doesn't run on an antique microprocessor look like? 17:29:12 that's kind of my thing right now 18:07:54 --- join: jedb_ joined #forth 18:10:44 --- quit: jedb (Ping timeout: 264 seconds) 18:18:19 --- join: Zarutian_HTC joined #forth 18:33:27 --- quit: cp- (Ping timeout: 240 seconds) 18:36:09 --- join: cp- joined #forth 18:38:11 --- join: boru` joined #forth 18:38:13 --- quit: boru (Disconnected by services) 18:38:16 --- nick: boru` -> boru 18:43:32 --- quit: cp- (Quit: Disappeared in a puff of smoke) 18:45:41 --- join: cp- joined #forth 19:03:34 --- join: gravicappa joined #forth 19:18:57 --- join: yyyyyy joined #forth 19:18:59 --- join: yyyyyy` joined #forth 19:19:01 --- quit: Zarutian_HTC (Ping timeout: 265 seconds) 19:19:18 --- quit: gravicappa (Ping timeout: 240 seconds) 19:40:16 --- join: hosewiejacke joined #forth 20:50:25 --- join: hosewiejacke2 joined #forth 20:52:10 --- join: yyyyyy`` joined #forth 20:53:42 --- quit: hosewiejacke (Ping timeout: 256 seconds) 20:54:16 --- quit: yyyyyy` (Ping timeout: 256 seconds) 20:55:07 --- quit: sts-q (Ping timeout: 240 seconds) 20:56:35 --- part: nmz left #forth 20:57:09 --- quit: cmtptr (Read error: Connection reset by peer) 20:59:35 --- join: sts-q joined #forth 21:01:49 --- join: cmtptr joined #forth 21:12:47 --- quit: hosewiejacke2 (Ping timeout: 240 seconds) 21:48:27 --- join: proteus-guy joined #forth 21:53:00 --- quit: WickedShell (Remote host closed the connection) 22:07:46 --- nick: jedb_ -> jedb 22:25:13 --- join: hosewiejacke2 joined #forth 22:36:59 --- quit: Keshl (Read error: Connection reset by peer) 22:37:22 --- join: Keshl joined #forth 23:20:10 --- quit: actuallybatman (Ping timeout: 260 seconds) 23:24:18 --- quit: joe9 (Ping timeout: 240 seconds) 23:24:34 --- join: joe9 joined #forth 23:40:59 --- quit: sts-q (Ping timeout: 265 seconds) 23:59:59 --- log: ended forth/21.01.20