Jump to content


New Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

14 Good

About D-Type

  • Rank
    Space Invader

Profile Information

  • Gender
  • Location
  1. Thanks for the explanation. It all seems so simple, but I don't yet understand the inner workings enough to really judge 🙂 10 bytes doesn't really seem much of an overhead...does anyone care about memory usage these days? Maybe it's a problem on the '99, I know it has some strange architectural challenges, maybe that's one of them. I read also the Inlining thread, it wasn't how I remembered it, but it's food for thought for my own Vectrex future enhancements! Currently I'm working on interfacing the Vectrex BIOS routines from Forth i.e. creating an API. Nothing public yet, but I'll be putting v1 on Github eventually. It actually already is on Github, but Private.
  2. What is the state of the art for '99 Forth cross compilers regarding macro inlining of small code words? I was thinking about how to improve the speed of my 6809 Vectrex/Camel Forth and came to a similar conclusion as this thread i.e. instead of rewriting the compiler as STC (not enough time, never going to happen) I could make it make it STC-ish by inclining code and reducing the call overhead. (I remembered the inlining thread that came after this one and searched for it, but first came across this thread - will reread the inlining thread next. Simple inlining was actually what I was thinking about using initially, but of course the mind wanders...)
  3. Postpone still confuses me as I learned and used Forth 83 for 10 years in the 90s. From memory, Starting Forth print editions don't mention Postpone, only Compile. (But there is an ansi'fied web & pdf version which has text modified to describe Postpone instead, I think.) The definition of Compile is much easier to understand and it does what you expect, so I started with that, as it's used by Postpone. Honestly, learning Compile or Postpone on their own isn't enough, you need to learn about immediate and compile modes etc. together else none of it makes sense. Starting Forth covers it all over a few meaty chapters, but you might need to read and think about it several times before it sinks in. (At least I had to.) Maybe try the SF chapters in the first edition pdf that's on the web and understand Compile, then deal with about Postpone later on?
  4. My serial port is provided by an ARM-based multicart that puts a UART into my address space and it gives me 921,600 baud with a 256 byte buffer both ways, which doesn't fill up. Thus the test is quite "clean"!
  5. How fast was the Pascal version? Not really comparable, but CamelForth running on 1.5MHz Vectrex runs the following code to a PC terminal via a serial interface with a buffer that doesn't overflow in 16 seconds: : U.R \ \ u width -- ; Display u right-aligned in a field n characters >R <# 0 #S #> R> OVER - 0 MAX SPACES TYPE ; variable ii : counter 0 ii ! begin ii 1 over +! @ dup 5 u.r 2000 = until ;
  6. People tend to want the things they can't have. There are millions of games out there that play just as well as Vectrex games, but Vectrex games are special because they are on a vector monitor. I don't understand why someone would want to play them in an emulator so badly. Why not buy a Vectrex and some games and wait for those special moments when a game you've wanted for years becomes available? Getting everything I wanted immediately would kill the enjoyment of the hobby for me. IMHO...
  7. This is the sad fact for Forth in modern times, everyone's so busy building their own Forth for the sake of building their own Forth, that there's no showcase applications being made! I decided not to build my own Forth, I'm adapting CamelForth 6809 to make a game or two that people can play on the Vectrex. I have to stop myself fiddling with the core Forth system every five minutes to make it better - that's the most difficult part!
  8. A quick question...how long does the binary transfer take, say for an 8k file? Back in the day when I was using a Dataman S4, I recall it taking about 10 seconds for a good chunk of a 32k EPROM. I don't use a Vectrex emulator for development, I work only on physical hardware, so this is pretty important for the edit-compile-download-test cycle that I use.
  9. That's a really useful guide, thanks for posting!
  10. D-Type

    Vectrex SD Cart?

    Hi Richard, I already have a VecMulti, so I don't need to order another. However, I would like to say Thanks! for jumping back into the community for a while to make some more carts so people can run homebrew. I'm sure it will help keep the community alive. Be sure to promote the usage of the device as an easy development solution, I haven't tried mine like this yet, but it's got to be faster than burning EPROMs!
  11. D-Type


    So the question, then, is whether it's better than RnS? As the latter is native 6809, albeit without a dedicated Vector generator, possibly it could be better than the original 6502 game. As I'm on holiday now, I can't test, but what do others think?
  12. So I finally, got round to speed testing FIND on the Vectrex Camel Forth: There are roughly 250 words in my Vectrex dictionary. This was with a phone stopwatch, so +/- 0.2 seconds, plus the result was pushed out to a 921600 baud terminal.. Entering 50 numbers onto the stack from 0 to 9 = 4.84 seconds or 0.96 for 10 numbers. Including/excluding 0 1 2 3 4 makes no difference, so I presume they're not defined as constants. (I had a quick look and couldn't find them.) However, FIND is not in code, it's defined as: : FIND \ c-addr -- c-addr 0/1/-1 not found/immed/normal LATEST @ BEGIN \ -- a nfa 2DUP [email protected] BF AND SWAP [email protected] \ -- a nfa n1 n2 = IF 2DUP CHAR+ SWAP DUP CHAR+ SWAP [email protected] S= ELSE 1 THEN DUP IF DROP NFA>LFA @ DUP THEN 0= UNTIL \ -- a nfa OR a 0 DUP IF \ if found, check immed status NIP DUP NFA>CFA \ -- nfa xt SWAP IMMED? 0= 1 OR THEN ; 6809 FTW!
  13. FIND is only used when compiling, correct? If yes, I guess using a cross compiler on a PC almost exclusively, which compiles my 5k binary in a couple of seconds, means this doesn't really make a lot of difference to me. I'm still interested, though, to try the 1 2 3...9 10 Enter test the see how fast the Vectrex 6809 does it. When I'm back from holiday...
  14. At some point in my Vectrex 6809 Camel Forth adventure, I'm going to need these optimisations, thanks for posting. Originally, Vectrex carts were 4k, later ones were 8k. More recent homebrew carts have been up to 64k via simple 32k bank switching. Memory size isn't a problem any more, but program speed always is. The Vectrex runs at 1.5MHz and so to get a flicker-free 50Hz screen update you need to get each update done in 30,000 cycles. There are no frame buffers or separate vector generator hardware available, it's all got to be done in real time by the 6809!
  15. Actually something I forgot to mention, I once owned a TI-99/4A. I can't remember where I got it from, but my eBay auction text from Jan 2002 when I listed it said "This is an auction for a Texas Instruments TI99/4A computer main unit only. I have no power supply or other leads so I do not know if it works." No wonder I can't really remember much about it, except it seemed really nicely made. I'm a bit sad now that I didn't stick it in a box in the garage for later!
  • Create New...